2012-09-20 29 views
0

我想知道如何获得多维数组的一些关键值的总和,知道一些键是变量;这里的情形的例子: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]) 

任何想法?

+0

$ filter_on_key_value - 是你试图让我们在这里实现的某种通用过滤器语言吗?即,是否希望能够针对任意任意dim1,dim2,dim3或dim4维度值过滤任意值?另外,你是否想要在每个级别上匹配变量的总和(例如,对于其他暗淡的每个组合)?我不清楚你想要达到的是什么! –

回答

0

使用了/ foreach循环通过多维数组和循环if语句来检查是否$为dim3 = $ variableX ...

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 
相关问题