PHP

时间:2016-01-12 03:38:47

标签: php arrays multidimensional-array

我搜索了一些内置的方法,并且从这里和那里尝试了很少的逻辑,但没有一个能让我满意。我创建了自己的逻辑,但仅限于数组的某个维度。我已经设法解决了我的项目问题,但正如我所说,我不满意。

考虑下面的数组:

 
$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' 的总和。希望你们能在这里理解这个问题。

谢谢。

1 个答案:

答案 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