php:keyによる多次元配列の値の取得

1211 ワード

keyは、多次元配列のvalueによって取得される
次の多次元配列があると仮定します.
$array = [
    'zero'=>[
        'e'=>'ss', 
        'f'=>'dd',
        ],
    'e'=>'111', 
    'second'=>'222', 
    'third'=>'333'
];

多次元配列のkeyの値が分かれば,このkeyに対応するvalueを再帰的に取得することができるが,再帰に加えてarray_walk_recursive関数を用いてこの動作を完了することもできる.
/** Obtain the value by key
 *
 *  
 */
function recur($key, $array){
    $data = [];
    array_walk_recursive($array, function ($v, $k) use ($key, &$data) {
        if ($k == $key) {
            array_push($data, $v);
        }
    });
    
    return $data;
}
    
$data = recur('e', $array);
print_r($data);

array_walk_recursive関数には2つのパラメータがあり、最初のパラメータは私たちが処理する配列を使用し、2番目のパラメータはコールバック関数であり、これは私たちがカスタマイズした関数です.この関数では、$kが私たちが与えたkeyのキー値に等しい場合、このkeyに対応する値value$data配列に加えるように設定します.
その他の関数
似たような関数はarray_walkもありますが、この関数は1次元配列しか適用できません.多次元配列を使うなら、array_walk_recursiveを使うほうがいいです.