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が不明であるため、これはできません。

私が見つける必要のあるアルゴリズムは、「$ dim3 = $ variableX...であるすべての$variable_valueの合計を取得する」のように、合計にフィルターを適用できるようにする必要があるため、次のような関数です。

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

何か案は?

4

2 に答える 2

0

RecursiveArrayIteratorとを使用してこれを試すことができますRecursiveIteratorIterator

$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 に答える
0

多次元配列をループするために for/foreach ループを使用し、if ステートメントを使用して $dim3 = $variableX... かどうかを確認します。

于 2012-09-20T16:28:50.577 に答える