添加php关联数组值不起作用

时间:2015-01-07 03:33:48

标签: php arrays

尝试将一堆数组值一起添加,保持ID值.... 我以为我可以使用+=运算符的基本foreach,但它没有用完。

以下是我的数组:

Array(
    [0] => Array(
            [246] => Array(
                    [amount] => 2
                )    
        )    
)
Array(
    [0] => Array(
            [245] => Array(
                    [amount] => 1
                )    
        )    
)
Array(
    [0] => Array(
            [243] => Array(
                    [amount] => 2
                )    
        )    
)
Array(
    [0] => Array(
            [245] => Array(
                    [amount] => 1
                )    
        )    
)

Array(
    [0] => Array(
            [243] => Array(
                    [amount] => 2
                )    
        )    
)

我想要得到的是:

array(
'243' => '4',
'245' => '2',
'246' => '2',
);

这就是我的尝试:

$sumArray = array();

foreach ($orgArray[0] as $k=>$subArray) {

    foreach ($subArray as $id=>$value) {

        $sumArray[$k]+=$value;
    }
}

这是我得到的:

Array
(
    [243] => 2
)

1 个答案:

答案 0 :(得分:1)

您只需要修改foreach循环,因为您正在尝试设置$key,这是数组的索引,对于上面的示例,0,1,2,3...etc 不是 246,245,243...etc正如您所期望的那样。

这就是你想要的。

$orgArray = [
    [246 => ['amount' => 2]],
    [245 => ['amount' => 1]],
    [243 => ['amount' => 2]],
    [245 => ['amount' => 1]],
    [243 => ['amount' => 2]],
];

$sumArray = array();

foreach ($orgArray as $k => $subArray) {
    foreach ($subArray as $id => $item) {
        if (!isset($sumArray[$id])) {
            $sumArray[$id] = 0;
        }
        $sumArray[$id] += $item['amount'];
    }
}

注意: 以上[]数组标识符假设您正在使用允许它的正确php版本,否则您将拥有将它们更改为array()

返回:

Array
(
    [246] => 2
    [245] => 2
    [243] => 4
)

正如所料。

EXAMPLE