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

PHP:如何获得具有特定键的多维数组的和?,php,Php,我想知道如何得到多维数组中一些键值的和,知道有些键值是变量;以下是一个情况示例: 数组可以这样编写: function array_sum_filter($array, $dimension, [$filter_on_key_value]) $array[$dim1][$dim2][$dim3][$dim4]=$variable\u value $dim1、2、3和4是带有维度的数组,我们不知道$dim1、2、3和4的名称 我们需要每个维度的所有$variable_值之和,但是我们不能做arr

我想知道如何得到多维数组中一些键值的和,知道有些键值是变量;以下是一个情况示例:

数组可以这样编写:

function array_sum_filter($array, $dimension, [$filter_on_key_value])
$array[$dim1][$dim2][$dim3][$dim4]=$variable\u value

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

我们需要每个维度的所有$variable_值之和,但是我们不能做
array_和($array[$dim1][$dim2][$dim3][$dim4])
,因为$dim是未知的

我需要找到的算法必须允许我对总和应用过滤器,如“获取所有$variable_值的总和,其中$dim3=$variableX…”,因此类似这样的函数:

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

有什么想法吗?

使用for/foreach循环在多维数组中循环,并使用if语句检查$dim3=$variableX…

您可以使用
递归数组迭代器
递归迭代器

$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

$filter_on_key_value-您想让我们在这里实现的是某种通用过滤语言吗?ie,是否希望能够按任意值筛选任意dim1、dim2、dim3或dim4标注值?另外,您是否希望在每个级别上获得匹配变量的总和(例如,对于其他DIM的每个组合?)我不清楚您想要实现的是什么!