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
を使うほうがいいです.