phpの多次元・二次元配列の指定キーの値を検索してデータを取得する方法
以下のようなリストがあって、nameキーがhogeである情報を抽出したい場合。
hogeは1つしかない場合は、array_search()とarray_column()を使えばOK。
$list = array( array('name' => 'hage', 'data' => 'mon'), array('name' => 'hige', 'data' => 'tue'), array('name' => 'huge', 'data' => 'wed'), array('name' => 'hege', 'data' => 'thu'), array('name' => 'hoge', 'data' => 'fri'), ); $key = array_search( 'hoge', array_column( $list, 'name')); var_dump(list[$key]);
phpの多次元・二次元配列の指定キーの値を検索してデータを取得する方法(同じ値が複数ある)
で、次はhogeが3つあります。
以下のようなリストがあって、nameキーの値がhogeである情報をすべて抽出したい場合。
array_search()とarray_column()を使うと、最初のhogeのみが抽出されます。
ので、array_search()のかわりにarray_keys()を使います。
$list = array( array('name' => 'hage', 'data' => 'mon'), array('name' => 'hige', 'data' => 'tue'), array('name' => 'huge', 'data' => 'wed'), array('name' => 'hege', 'data' => 'thu'), array('name' => 'hoge', 'data' => 'fri'), array('name' => 'hoge', 'data' => 'sat'), array('name' => 'hoge', 'data' => 'sun'), ); $key_list = array_keys( array_column( $list, 'name'), 'hoge' ); var_dump($key_list);
var_dump()の結果は、hoge値を持つ$listのキーになります。
//var_dump()の結果 array(3) { [0]=> int(4) [1]=> int(5) [2]=> int(6) }
コメント
phpの多次元・二次元配列の指定キーの値を検索してデータを取得する方法(同じ値が複数ある)の項目の最終行は誤りです。
var_dump($list[$key]);
ではなく
var_dump($key_list)
です。
通りすがりさん
コメントありがとうございます!
確かにそのとおり、誤字でした。
修正しました!