PHP:如何获得具有特定键的多维数组的总和?

时间:2012-09-20 16:24:31

标签: php

我想知道如何获得多维数组的一些关键值的总和,知道一些键是变量;这是一个例子:

数组可以这样写:

$array[$dim1][$dim2][$dim3][$dim4] = $variable_value;

$ dim1,2,3和4是具有维度的数组,我们不知道$ dim1,2,3和4的名称。

我们想要每个维度的所有$ variable_value的总和,但我们不能array_sum($array[$dim1][$dim2][$dim3][$dim4]),因为$ dim是未知的。

我需要找到的算法必须允许我对总和应用过滤器,例如“获取所有$ variable_value的总和,其中$ dim3 = $ variableX ...”,所以这样的函数:

function array_sum_filter($array, $dimension, [$filter_on_key_value])

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

使用/ foreach循环来循环遍历多维数组,使用if语句来检查$ dim3 = $ variableX ...

答案 1 :(得分:0)

您可以使用RecursiveArrayIteratorRecursiveIteratorIterator

尝试此操作
$sum = 0;
$specific = 0;
$array = array();
$array["A"]["B"]["C"]["D"] = 5;
$array["A"]["B"]["K"]["D"] = 3;
$array["A"]["C"] = 2;

$array_obj = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach ( $array_obj as $key => $value ) {
    $sum += $value;

    if ($key == "D")
        $specific += $value;
}

echo $sum, PHP_EOL;
echo $specific, PHP_EOL;

输出

 10
 8