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)
です。
通りすがりさん
コメントありがとうございます!
確かにそのとおり、誤字でした。
修正しました!