用php中的键值更改合并多维数组中的重复数组
这是我的多维数组:用php中的键值更改合并多维数组中的重复数组,php,multidimensional-array,Php,Multidimensional Array,这是我的多维数组: array( array('object_id' => 10, 'score' => 1), array('object_id' => 11, 'score' => 1), array('object_id' => 12, 'score' => 1), array('object_id' => 11, 'score' => 1), array('object_id' => 10, 'score' => 1), arr
array(
array('object_id' => 10, 'score' => 1),
array('object_id' => 11, 'score' => 1),
array('object_id' => 12, 'score' => 1),
array('object_id' => 11, 'score' => 1),
array('object_id' => 10, 'score' => 1),
array('object_id' => 14, 'score' => 1),
)
我的预期产出是:
array(
array('object_id' => 10, 'score' => 2),
array('object_id' => 11, 'score' => 2),
array('object_id' => 12, 'score' => 1),
array('object_id' => 14, 'score' => 1),
)
口头上说,我需要的是在多维数组中找到唯一的object_id,并结合它们的“score”值。在php中最有效的方法是什么
$output = array();
foreach($array as $e)
{
if(isset($output[$e['object_id']]))
{
$output[$e['object_id']]['score']+=$e['score'];
}else
{
$output[$e['object_id']] = $e;
}
}
print_r(array_values($output));
这里是测试
$ cat test.php
<?php
$array = array(
array('object_id' => 10, 'score' => 1),
array('object_id' => 11, 'score' => 1),
array('object_id' => 12, 'score' => 1),
array('object_id' => 11, 'score' => 1),
array('object_id' => 10, 'score' => 1),
array('object_id' => 14, 'score' => 1),
);
$output = array();
foreach($array as $e)
{
if(isset($output[$e['object_id']]))
{
$output[$e['object_id']]['score']+=$e['score'];
}else
{
$output[$e['object_id']] = $e;
}
}
// Input
print_r($array);
// Output
print_r(array_values($output));
?>
$ php test.php
Array
(
[0] => Array
(
[object_id] => 10
[score] => 1
)
[1] => Array
(
[object_id] => 11
[score] => 1
)
[2] => Array
(
[object_id] => 12
[score] => 1
)
[3] => Array
(
[object_id] => 11
[score] => 1
)
[4] => Array
(
[object_id] => 10
[score] => 1
)
[5] => Array
(
[object_id] => 14
[score] => 1
)
)
Array
(
[0] => Array
(
[object_id] => 10
[score] => 2
)
[1] => Array
(
[object_id] => 11
[score] => 2
)
[2] => Array
(
[object_id] => 12
[score] => 1
)
[3] => Array
(
[object_id] => 14
[score] => 1
)
)
仅仅看一下手册就比张贴这个问题检查要简单/快速得多