0

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

数组可以这样写:

$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])

有任何想法吗?

4

2 回答 2

0

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

于 2012-09-20T16:28:50.577 回答
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
于 2012-09-20T16:30:33.247 回答