Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于特定元素值的PHP组合数组_Php_Arrays - Fatal编程技术网

基于特定元素值的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);