我已经有了这个多维数组(如果这就是它的名字的话)的客户和客户内部是他的商品,以及这些商品的费用。但是,我需要从这些项目中得到所有的费用,并把它们加起来给客户。<<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
}
为什么一个循环比两个循环慢得多?