【PHP初心者向け】 配列から検索する array_search

おはようございます。

いや、こんにちは!
いやいや、こんばんは!!

学生の頃、どんな時間に会っても「おはようございます。」と言わされていた裕です。

ややこしい配列、操作苦手意識を持っている方も多いと思います。
配列から検索したい時ってありますよね?

そこで今回はPHP初心者に向けて、
配列から指定した値で検索し、見つかった最初のキーを返す array_search
について解説します。

array_searchの引数を解説

まずarray_searchの基本的な書き方です。

array_search (mixed $needle , array $haystack[bool $strict = FALSE] )

needle

検索したい値です。(必須)

この値が文字列の場合、大文字と小文字を区別して検索します。

haystack

検索される対象の配列です。(必須)

strict

strictTRUE が指定された時、haystackの中でneedle厳密比較を行います。またオブジェクトが同一インスタンスであるかどうかも比較します。

返り値

needlehaystackから見つかった場合、見つかった最初の値のキーを返します。それ以外の場合はfalseを返します。

array_searchの書き方

基本的な3パターンを紹介します。

基本的な検索の仕方

<?php

$array = [‘one’, ‘two’, ‘three’, ‘four’, ‘five’, ‘six’, ‘seven’];

print_r($array);

$result = array_search(‘seven’, $array);

var_dump($result);

?>

結果は下記になります。

Array

(

    [0] => one

    [1] => two

    [2] => three

    [3] => four

    [4] => five

    [5] => six

    [6] => seven

)

int(6)

array_searchによって値が’seven’のキーである6が返されました。

デフォルトの状態では曖昧に比較される

第一引数をint型にして第三引数を設定せずに検索してみます。

<?php

$array = [‘1’, 1];

var_dump($array);

$result = array_search( 1 ,$array);

var_dump($result);

?>

結果は下記になります。

array(2) {

  [0]=>

  string(1) “1”

  [1]=>

  int(1)

}

int(0)

第一引数に数値の1を指定しましたが、文字列の’1’のキーが返ってきました。このように第一引数と第二引数を指定するでけではこのように曖昧な検索結果になってしまいます。

厳密に比較する

第三引数trueを設定して検索してみます。

<?php

$array = [‘1’, 1];

var_dump($array);

$result = array_search( 1 ,$array, true);

var_dump($result);

?>

結果は下記になります。

array(2) {

  [0]=>

  string(1) “1”

  [1]=>

  int(1)

}

int(1)

第三引数を設定することにより、しっかりと型の方も比較されて検索されました

まとめ

いかがでしたか?

今回は配列に指定した値を配列で検索し、見つかった場合対応する最初のキーを返す「array_search」について、解説しました。

これで配列から指定したキーを検索することができますね。

是非使ってみて下さい。