phpの多次元・二次元配列の指定キーの値を検索してデータを取得する方法(同じ値が複数ある)

本ページにはプロモーションが含まれています。

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
Sabohをフォローする
左坊のメモ帳

コメント

  1. 通りすがり より:

    phpの多次元・二次元配列の指定キーの値を検索してデータを取得する方法(同じ値が複数ある)の項目の最終行は誤りです。

    var_dump($list[$key]);
    ではなく
    var_dump($key_list)
    です。

    • Saboh より:

      通りすがりさん

      コメントありがとうございます!

      確かにそのとおり、誤字でした。

      修正しました!

タイトルとURLをコピーしました