我搜索了一些内置的方法,并且从这里和那里尝试了很少的逻辑,但没有一个能让我满意。我创建了自己的逻辑,但仅限于数组的某个维度。我已经设法解决了我的项目问题,但正如我所说,我不满意。
考虑下面的数组:
$data = array
(
'0' => array
(
'0' => array
(
'make_ready' => '',
'ready_time' => '0.55',
'rate' => '46',
'no_of_run' => '',
'fixed_cost' => '',
'variable_cost' => '25.3',
'0' => array(
'kg' => 2.66,
'rate' => 11.4,
'fixed_cost' => '',
'variable_cost' => 30.32,
'0' => array(
'kg' => 2.66,
'rate' => 11.4,
'fixed_cost' => '',
'variable_cost' => 30.32,
),
),
),
),
'1' => array
(
'0' => array
(
'make_ready' => '1',
'ready_time' => '1.16',
'rate' => '36.47',
'no_of_run' => '',
'fixed_cost' => '36.47',
'variable_cost' => '42.31',
),
),
'2' => array
(
'make_ready' => '2',
'ready_time' => '0.29',
'rate' => '360',
'no_of_run' => '',
'fixed_cost' => '720',
'variable_cost' => '104.4',
),
'size' => '1000 X 1200 X 1190',
'up' => '3 X 4 / 17',
'unit' => '4',
'rate' => 16.32,
'fixed_cost' => '',
'variable_cost' => 65.28,
);
问题:
我想总结数组元素的所有值,其中键是' variable_cost' ,无论数组有多深(就维度而言)。基本上就像一个循环,可以扫描所有元素,并做“总和”。如果密钥匹配。
我希望有人帮助/建议任何可以进行计算的逻辑,直到 nth 维度。
例如电影 Inception ,他们可以去
梦 - >在梦中 - >到 nth 梦想的数量。
并提出' variable_cost' 的总和。希望你们能在这里理解这个问题。
谢谢。
答案 0 :(得分:1)
您需要使用递归函数来汇总所有variable_cost值:
detailView
基本上它循环遍历数组并查看是否有其他数组,只添加包含键function sum_variable_cost( $data, $total=0) {
foreach ($data as $key => $item) {
if (is_array($item)) {
$total = sum_variable_cost($item, $total);
} else if ($key=='variable_cost') {
//echo $key . " " . $item . "\n";
$total += $item;
}
}
return $total;
}
echo sum_variable_cost( $data );
的值。
如果取消注释回显线,它将显示此输出:
variable_cost