下のような多重配列があるとする。
<?php $a = [ 'foo' => [ 'bar' => [ 'user_id' => 10 ] ] ];
この配列構造を知らない状態で、'user_id'キーの値だけ検索して取り出したい。
再帰処理を書けばいいだけなんだけど、PHPの標準ライブラリで実現できないかと思って検索すると、できそうなクラスが見つかった。
PHP: RecursiveIteratorIterator - Manual
これでできそう。しかし、RecursiveIteratorIterator… すごいクラス名だ。
サンプルコードを参考にして、以下のようなコードを作成した。 これで、どのような多重配列構造の配列でも特定のキー名から対応する値を取り出せる。
<?php function searchValueByKey(array $ary, $str) { $it = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($ary)); foreach ($it as $k => $v) { if ($str === $k) { return $v; } } return false; } $a = [ 'foo' => [ 'bar' => [ 'user_id' => 10 ] ] ]; // search 'user_id' value in the array echo searchValueByKey($a, 'user_id'); // 10
本記事はQiita に投稿しました。
[PHP]多重配列内の特定のキーを検索しその値を取り出す on @Qiita http://qiita.com/tic40/items/2e45e2a9d25b91eed8f1