PHPの配列から指定した値が存在するかどうかや、指定した値を抜き出したい場合などに便利な関数があります。
それがarray_searchとarray_keys、in_arrayです。
array_search は指定した値のキーを配列から取得します。
array_keys に指定した値のキーを配列から取得します。array_searchとの違いは検索結果が複数存在する場合に全て取得できるということです。
in_array は、指定した値が配列に含まれる場合 true で、含まれない場合 false を返します。
配列の中から要素を検索するarray_searchの使い方
array_search() は指定した値を配列の中から検索し、キーを返す
array_searchの使い方
[aside type=”normal”]array_search(検索する値, 検索対象の配列, 型指定検索);[/aside]
第一引数には、検索する値を指定します。
第二引数は、検索対象の配列を指定します。
第三引数は、型指定検索を指定しますが省略可能です。
戻り値に検索結果の配列のキーを返します。
array_searchのサンプルコード
$ary = array("東京", "大阪", "北海道", "沖縄");
$result = array_search("北海道", $ary);
var_dump($result);
実行結果は以下のようになります。
int(2)
配列のインデックスは0から始まるので、北海道は 2 となります。
連想配列だと次のようになります。
$ary = array("tokyo" => "東京", "osaka" => "大阪", "hokkaido" => "北海道", "okinawa" => "沖縄");
$result = array_search("北海道", $ary);
var_dump($result);
実行結果は以下のようになります。
string(8) "hokkaido"
連想配列の場合はキーが取得できます。
配列に指定した値が複数存在する場合
配列はキーの重複はありませんが、値の重複はありえます。
指定した値が配列に複数存在する場合は何が取得できるのでしょうか?
北海道を検索する場合、配列に北海道が2つあったとします。(以下のコード)
$ary = array("東京", "大阪", "北海道", "沖縄", "北海道");
$result = array_search("北海道", $ary);
var_dump($result);
これを実行すると以下のようになります。
int(2)
最初に見つかった値のインデックスだけが返されるようです。
これでは両方取得したい場合に不便です。
その場合は次に説明するarray_keysを使います。
配列の中から要素を検索するarray_keysの使い方
配列の値は重複する可能性があるので、複数のキーが取得できる場合があります。
複数のキーを取得する場合はarray_keysを使います。
array_keysの使い方
[aside type=”normal”]array_keys(検索対象の配列, 検索する値);[/aside]
第一引数は、検索対象の配列を指定します。
第二引数は、検索する値を指定します。
戻り値に検索結果の配列のキーの配列を返します。
array_searchと検索対象の配列、検索する値の順番が異なるので注意してください。
array_keysのサンプルコード
$ary = array("東京", "大阪", "北海道", "沖縄", "北海道");
$result = array_keys($ary, "北海道");
var_dump($result);
実行結果は以下のようになります。
array(2) {
[0]=>
int(2)
[1]=>
int(4)
}
配列のインデックスは0から始まるので、北海道は 2 と 4 になります。
連想配列だと次のようになります。
$ary = array("tokyo" => "東京", "osaka" => "大阪", "hokkaido" => "北海道", "okinawa" => "沖縄", "hokkaido2" => "北海道");
$result = array_keys($ary, "北海道");
var_dump($result);
実行結果は以下のようになります。
array(2) {
[0]=>
string(8) "hokkaido"
[1]=>
string(9) "hokkaido2"
}
連想配列の場合はキーが配列で取得できます。
配列の中から要素の存在をチェックするin_arrayの使い方
配列に値が含まれているかどうかだけを知りたい場合はin_arrayを使うと簡単です。
キーではなく、存在すれば true で存在しなければ false と真偽で返してくれます。
in_arrayの使い方
[aside type=”normal”]in_array(検索する値, 検索対象の配列, 型指定検索);[/aside]
第一引数には、検索する値を指定します。
第二引数は、検索対象の配列を指定します。
第三引数は、型指定検索を指定しますが省略可能です。
戻り値に検索結果存在すれば true で存在しなければ false を返します。
in_arrayのサンプルコード
$ary = array("東京", "大阪", "北海道", "沖縄", "北海道");
$result = in_array("北海道", $ary);
var_dump($result);
実行結果は以下のようになります。
bool(true)
値が存在しない場合はどうでしょう。
$ary = array("東京", "大阪", "北海道", "沖縄", "北海道");
$result = in_array("京都", $ary);
var_dump($result);
を実行すると、
bool(false)
となります。
この関数は存在するかどうかだけなので、通常の配列でも連想配列でも結果は同じです。
まとめ
PHP配列の中から要素を検索する方法をご紹介しました。
array_search は指定した値のキーを配列から取得します。
array_keys はarray_search同様に指定した値のキーを配列から取得します。
array_searchとの違いは検索結果が複数存在する場合に全て取得できるということです。
in_array は、指定した値が配列に含まれる場合 true で、含まれない場合 false を返します。










コメント