0

我有这个客户的多维数组(如果这就是所谓的),客户内部是他的物品,以及这些物品的费用。但是,我需要从物品中获取所有费用并将它们相加为客户。 数组结构

    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'];
            }
        }
    }
}
4

2 回答 2

2

看起来你可以把它减少到:

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

编辑:实际上,您也可以使该分配变得不那么混乱:

$customer['Fee'] += $item['MFee'];
于 2013-04-12T09:18:08.260 回答
0

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
}

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

于 2013-04-12T10:09:35.727 回答