基于特定元素值的PHP组合数组
我有一个像这样的数组基于特定元素值的PHP组合数组,php,arrays,Php,Arrays,我有一个像这样的数组 Array ( [0] => Array ( [id] => 123 [count] => 1 ) [1] => Array ( [id] => 123 [count] => 3 ) [2] => Array (
Array (
[0] => Array
(
[id] => 123
[count] => 1
)
[1] => Array
(
[id] => 123
[count] => 3
)
[2] => Array
(
[id] => 513
[count] => 0
)
[3] => Array
(
[id] => 561
[count] => 1
)
[4] => Array
(
[id] => 613
[count] => 7
)
)
我要做的是创建一个新的数组,在id值相同的情况下,该数组对计数进行合计。例如,新阵列的外观如下所示:
Array (
[0] => Array
(
[id] => 123
[count] => 4
)
[1] => Array
(
[id] => 513
[count] => 0
)
[2] => Array
(
[id] => 561
[count] => 1
)
[3] => Array
(
[id] => 613
[count] => 7
)
)
有谁知道这样做的好方法吗
谢谢大家! 任何不创建
id=>count的关联数组的原因
您可以使用以下函数进行操作(我没有测试代码,但它应该可以工作):
函数get\u count\u数组($arr){
$new_array=array();
foreach($arr作为$item){
$found=false;
//循环查看所有当前的新项目,检查我们是否已经有了它
对于($i=0;$i$item['id'],'count'=>0);
}
}
返回$new_数组;
}
简洁明了:
$new_array = array();
foreach($data_array as $value) {
if(array_key_exists($value['id'], $new_array)) {
$new_array[$value['id']] += $value['count'];
} else {
$new_array[$value['id']] = $value['count'];
}
}
echo print_r($new_array,true);
我做了
id=>value
,因为当id
可以用作数组的键时,似乎不需要另一个数组来存储数据。好吧,实际数组中有更多的值只要迭代并创建一个新数组,如果id与以前的id相同(保存)并添加计数,但我觉得一定有更好的办法
$new_array = array();
foreach($data_array as $value) {
if(array_key_exists($value['id'], $new_array)) {
$new_array[$value['id']] += $value['count'];
} else {
$new_array[$value['id']] = $value['count'];
}
}
echo print_r($new_array,true);