【便利】配列の値を検索するarray_search/_keys/_column

配列の値を検索して、要素番号や配列で返してくれる関数たち。
ソートをかけたいときなど便利なので使い道は色々。演習問題1でも使用。

大きくは配列から検索する場合と連想配列から検索する場合の2つの場合分けがある。

配列の値を検索する方法

array_search(おすすめ度★★☆☆☆)

検索した値の最初の値のインデックスキーのみを返す。

<?php
array_search //(検索する値, 検索対象の配列, 型の比較を行うか)
?>

第一引数:検索したい値
第二引数:該当の配列
第三引数:データ型を判定可否(trueを入れるとデータ型もみる)

実行結果:要素番号1つだけが返ってくる

サンプルコード

<?php
$frends = ['田中', '樋口', '山本', '小山','田中', '鈴木', '佐藤', '鈴木'];
$bestFrendId =  array_search('小山', $frends);
print_r($bestFrendId);

// 実行結果  3
?>

in_arry(おすすめ度★☆☆☆☆)

これは実行結果に、tureかfalseを返す。それ以外は変わらん。


複数の値を検索する方法

array_keys(おすすめ度★★★☆☆)

検索する値が配列に複数ある場合でも、array_search関数は最初の値のインデックスキーのみを返しました。
全てのインデックスキーを取得したい場合は、array_keys関数を使います。

<?php
array_keys(検索対象の配列, 検索する値)
?>


array_search関数やin_array関数と引数の順番が違う点に注意。
検索して見つかった全ての要素番号を配列にして返してくれる

サンプルコード

<?php
$frends = ['田中', '樋口', '山本', '小山','田中', '鈴木', '佐藤', '鈴木'];
$suzukiId =  array_keys($frends, '鈴木' );  //鈴木だけの配列を作ってくれる!
print_r($suzukiId);

// 実行結果  Array ( [0] => 5 [1] => 7 )
//つまり、Array (5 ,7 ) と同じ
?>

多次元配列の値を検索する方法

array_column(おすすめ度★★★★☆)

キーを指定して、まとめて配列で返します。

<?php
array_column(値を取り出したい多次元配列, キーを指定)
?>


サンプルコード

<?php

$array = [
    ['area' => '東京都', 'name' => '田中', 'age' => 25, 'sex' => '女性'],
    ['area' => '神奈川', 'name' => '樋口', 'age' => 10, 'sex' => '女性'],
    ['area' => '大阪府', 'name' => '山本', 'age' => 16, 'sex' => '女性'],
    ['area' => '京都府', 'name' => '小山', 'age' => 10, 'sex' => '女性']
];

$arrayAge =  array_column($array, 'age');  //age配列


// 実行結果 Array ( [0] => 25 [1] => 10 [2] => 16 [3] => 10 )
//つまり、Array (25 , 10, 16, 10 ) と同じ
?>

===========

参照記事(ありがとうございました!!)


www.sejuku.netwww.sejuku.net


===========