【PHP】特定のキーの値を抜き出して、新しい配列を生成する(array_column)

  • PHP

array_columnを使うと、連想配列のキーを指定してその値だけの新しい配列を生成することができます。

array_column(配列, 'キー');

array_mapなどでも似たようなことが出来るかもしれませんが、こちらはさらに簡単です。また、後述するキーと値のペアの連想配列を作るのが非常に手っ取り早いです。

使い方

こんな感じで、動物たちの情報を含んだ$animals配列を作成しました。

$animals = [
   [
      'ID' => 10,
      'name' => 'サイ',
      'color' => 'gray',
   ],
   [
      'ID' => 11,
      'name' => 'たぬき',
      'color' => 'brown',
   ],
   [
      'ID' => 10,
      'name' => 'きつね',
      'color' => 'yellow',
   ],
];

この配列を元にして、動物名nameだけを抜き出してみます。

$animal_names = array_column($animals, 'name');

すると、動物たちの名前だけの配列を生成できます。

$animal_names 
<- ['サイ','たぬき','きつね',]

抜き出した値に対して、キーを設定する

新しい配列を作る時に、別の値をキーとして設定した連想配列を生成することもできます。第三引数にキーの名前を入れます。

array_column(配列, '値の名前', 'キーの名前');

さきほどの例を使って、動物名 => 色の連想配列を作りたいときは、

$animal_names = array_column($animals, 'color', 'name');

$animal_names
<- [
  'gray' => 'サイ',
  'brown' => 'たぬき',
  'yellow' => 'きつね',
]

となります。

第三引数の存在に気づかず別の方法で対応しようと思ってましたが、なかなか便利ですね。

さらに詳しくは PHP: array_column – Manual を参照