配列から値を条件に当てはまる配列を取得したい時にいい感じの関数がなかったので、関数を組み合わせて対象の配列を取得できる方法をまとめておこうかと思います。

$test = [
  [
    "id" => 1,
    "name" => "taro",
  ],
  [
    "id" => 2,
    "name" => "jiro",
  ],
  [
    "id" => 3,
    "name" => "saburou",
  ],
];

こんな感じの配列があって、jiroの配列だけ取りたいケースです。

先に答えを書くとこんな感じになります。

$arrayNo = array_search('jiro', array_column($test, 'name'));
$targetArray = $arrayNo !== false ? $test[$arrayNo]: [];

出力はこんな感じになります。

[
   "id" => 2,
   "name" => "jiro",
]

それでは処理を見ていきます。

まず、array_column($test, ‘name’)の部分で対象の項目の値だけ取り出します。

今回の場合の出力は以下になります。

[
   "taro",
   "jiro",
   "saburou",
]

そして、array_search関数を使って、探したい文字列を指定して、その配列の番号を返します。

jiroを選択した場合は1になりますし、ichiroのように存在しない場合はfalseを返します。

そして、$targetArray = $arrayNo !== false ? $test[$arrayNo]: [];の部分で存在する場合は対象の配列、存在しない場合は空配列を返すようにします。

今回の方法だと、最初に該当する配列しか取得できないので、複数条件とか条件に当てはまる全ての配列を取得できるようになったら便利ですね

 

参照

https://www.php.net/manual/ja/function.array-search.php

カテゴリー: PHP

0件のコメント

コメントを残す

メールアドレスが公開されることはありません。