php 二维数组去重合并将相同数量累加 本帖最后由 YuJingSheYing 于 2014-10-27 17:56:41 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我先来个<?php/** * * User: shikiliu * Date: 13-12-5 */$arr = array( array( 'user_id' => 100, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ),);$container = array();$result = array();foreach ($arr as $item) { $key = $item['user_id'] . '_' . $item['goods_id']; if (empty($container[$key])) { $container[$key] = $item['number']; } else { $container[$key] += $item['number']; }}foreach ($container as $key => $item) { list($user_id, $goods_id) = explode('_', $key); $result[] = array('user_id' => $user_id, 'goods_id' => $goods_id, 'number' => $item);}var_export($result);array ( 0 => array ( 'user_id' => '100', 'goods_id' => '10', 'number' => 1, ), 1 => array ( 'user_id' => '102', 'goods_id' => '10', 'number' => 3, ),) $arr = array( array( 'user_id' => 100, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ), );$res = array();foreach($arr as $item) { if(! isset($res[$item['user_id']])) $res[$item['user_id']] = $item; else { $res[$item['user_id']]['number'] += $item['goods_id']; }}print_r(array_values($res));Array( [0] => Array ( [user_id] => 100 [goods_id] => 10 [number] => 1 ) [1] => Array ( [user_id] => 102 [goods_id] => 30 [number] => 21 )) $arr = array( array( 'user_id' => 100, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ),);$item=array();foreach($arr as $k=>$v){ if(!isset($item[$v['user_id']])){ $item[$v['user_id']]=$v; }else{ $item[$v['user_id']]['number']+=$v['number']; }}print_r($item);Array( [100] => Array ( [user_id] => 100 [goods_id] => 10 [number] => 1 ) [102] => Array ( [user_id] => 102 [goods_id] => 10 [number] => 3 )) $arr = array( array( 'user_id' => 100, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ), array( 'user_id' => 102, 'goods_id' => 10, 'number' => 1, ), );$result = array();foreach($arr as $val){ $key = $val['user_id'].'_'.$val['goods_id']; if(!isset($result[$key])){ $result[$key] = $val; }else{ $result[$key]['number'] += $val['number']; }}echo '<pre>';print_r(array_values($result));echo '</pre>';Array( [0] => Array ( [user_id] => 100 [goods_id] => 10 [number] => 1 ) [1] => Array ( [user_id] => 102 [goods_id] => 10 [number] => 3 )) PHP页面跳转问题 刚接触PHP。问个模板内循环数据的问题。 想在查询结果函数中不用fetch_array,请问有什么好的办法吗? 利用404 伪静态??? 初学都的问题~~ 如何实现跳转? 可不可以不安装服务器,但是可以执行本机上的PHP程序 超简单问题,从一个页转到另一个页的命令是什么? 请问简单的配置问题 ftp 怎么选择保存路径 PHP网站怎样发布? 技术贴 关于PHP字符串替换方面的 经常碰到 看描述
/**
*
* User: shikiliu
* Date: 13-12-5
*/$arr = array(
array(
'user_id' => 100,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
);
$container = array();$result = array();foreach ($arr as $item) { $key = $item['user_id'] . '_' . $item['goods_id']; if (empty($container[$key])) { $container[$key] = $item['number']; }
else { $container[$key] += $item['number'];
}
}
foreach ($container as $key => $item) { list($user_id, $goods_id) = explode('_', $key); $result[] = array('user_id' => $user_id, 'goods_id' => $goods_id, 'number' => $item);}var_export($result);array (
0 =>
array (
'user_id' => '100',
'goods_id' => '10',
'number' => 1,
),
1 =>
array (
'user_id' => '102',
'goods_id' => '10',
'number' => 3,
),
)
array(
'user_id' => 100,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
);$res = array();
foreach($arr as $item) {
if(! isset($res[$item['user_id']])) $res[$item['user_id']] = $item;
else {
$res[$item['user_id']]['number'] += $item['goods_id'];
}
}
print_r(array_values($res));
Array
(
[0] => Array
(
[user_id] => 100
[goods_id] => 10
[number] => 1
) [1] => Array
(
[user_id] => 102
[goods_id] => 30
[number] => 21
))
$arr = array(
array(
'user_id' => 100,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
);
$item=array();
foreach($arr as $k=>$v){
if(!isset($item[$v['user_id']])){
$item[$v['user_id']]=$v;
}else{
$item[$v['user_id']]['number']+=$v['number'];
}
}
print_r($item);Array
(
[100] => Array
(
[user_id] => 100
[goods_id] => 10
[number] => 1
) [102] => Array
(
[user_id] => 102
[goods_id] => 10
[number] => 3
))
$arr = array(
array(
'user_id' => 100,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
array(
'user_id' => 102,
'goods_id' => 10,
'number' => 1,
),
);$result = array();foreach($arr as $val){
$key = $val['user_id'].'_'.$val['goods_id'];
if(!isset($result[$key])){
$result[$key] = $val;
}else{
$result[$key]['number'] += $val['number'];
}
}echo '<pre>';
print_r(array_values($result));
echo '</pre>';Array
(
[0] => Array
(
[user_id] => 100
[goods_id] => 10
[number] => 1
) [1] => Array
(
[user_id] => 102
[goods_id] => 10
[number] => 3
))