对具有不可预测键的多维数组求和


Sum on multidimensional array with unpredictable keys

我已经有了这个多维数组(如果这就是它的名字的话)的客户和客户内部是他的商品,以及这些商品的费用。但是,我需要从这些项目中得到所有的费用,并把它们加起来给客户。<<strong>阵列结构/strong>

    Array
    (
        [6bb728] => Array
            (
                [TitleName] => Sir Isaac
                [Surname] => Newton
                [sum] =>
                [id] => 6bb728
                [items] => Array
                    (
                        [29] => Array
                            (
                                [AssignedTo] => 6bb728
                                [Number] => 03-014
                                [MFee] => 103.5
                            )
                    )
            )

sum键应该包含项目费用的总和。这让我想到了我的问题:是否有任何有效的方法来获得多维数组中存在的一个键的和?

我已经尝试了四次foreach,这使我的计算机进入了一个循环(有数百个客户,它必须做这么多循环)

foreach($customers as $value) {
    foreach($value as $value1){
        foreach($value1['items'] as $value2) {
            foreach($value2 as $value3) {
                $customers[$value3['AssignedTo']]['Fee'] += $value3['MFee'];
            }
        }
    }
}

看起来你可以把它缩减为:

foreach($customers as $customer) {
    foreach($customer['items'] as $item) {
        $customers[$item['AssignedTo']]['Fee'] += $item['MFee'];
    }
}

Edit:实际上你也可以让这个赋值少一些混乱:

$customer['Fee'] += $item['MFee'];

在遍历客户时使用multiple loops而不是嵌套循环。

,

<?php
$input_array = array('a' => 'aaa', 'b' => 'bbb', 'c' => 'ccc', 'd' => 'dddd', 'e' => 'eeee');
//chunks of size 2
$my_array_chunks = array_chunk($input_array, count($input_array) / 2, true);
?>

//数组块形成

Array
(
  [0] => Array
        (
            [a] => aaa
            [b] => bbb
        )
    [1] => Array
        (
            [c] => ccc
            [d] => dddd
        )
    [2] => Array
        (
            [e] => eeee
        )
)

分为多个循环

<?php
foreach(my_array_chunks[0] as $val){
   //code here
}
foreach(my_array_chunks[1] as $val){
      //code here
}
foreach(my_array_chunks[2] as $val){
     //code here
}

为什么一个循环比两个循环慢得多?