用PHP整合数组?

时间:2009-09-12 02:31:14

标签: php arrays merge

我有一个如下所示的数组:

  

数组(

[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
    )
     

1 个答案:

答案 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);