我有一个如下所示的数组:
数组(
[0] => Array ( [id] => 10 [value] => 5 ) [1] => Array ( [id] => 10 [value] => 1 ) [2] => Array ( [id] => 11 [value] => 1 ) [3] => Array ( [id] => 11 [value] => 1 )
)
如何通过id合并数组?我正在寻找的结果数组将是:
数组(
[0] => Array ( [id] => 10 [value] => 6 ) [1] => Array ( [id] => 11 [value] => 2 )
)
答案 0 :(得分:2)
这不是一个非常有效的结构。您是否考虑过以这种形式合并?
array
(
10 => 6,
11 => 2,
);
这将允许对ID进行快速键查找。
要将您的第一个数组合并到该表单中,请执行以下操作:
$array2 = array();
foreach($array1 as $row)
{
if(isset($array2[$row['id']]))
$array2[$row['id']] += $row['value'];
else
$array2[$row['id']] = $row['value'];
}
哪个会以下列形式为您提供数组:
$array2 = array
(
10 => 6,
11 => 2,
);
如果你真的需要你的请求表单,那么还有一个处理循环可以实现它......
$array3 = array();
foreach($array2 as $id => $value)
{
$array3[] = array('id' => $id, 'value' => $value);
}
所以,你去吧!
更紧凑:
$array2 = array();
foreach($array1 as $row)
$array2[$row['id']] = (isset($array2[$row['id']]) ? $array2[$row['id']] : 0) + $row['value'];
$array3 = array();
foreach($array2 as $id => $value)
$array3[] = array('id' => $id, 'value' => $value);