PHPの配列から値を検索し、キーと値をそれぞれ取得する方法(in_array,array_search)

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPの配列の中から特定の値を検索します。

見つかったらtrueを返すin_array()と、キーを取得するarray_search()がそれぞれあります。

PHP特有の型の自動変換でハマるポイントもご紹介しています。

 

in_array関数で配列の中から値を検索する

配列の中に「横浜」の文字があったら「横浜です。」と表示させてみましょう。

横浜です。

表示されましたね。

in_array関数の構文

in_array(探す値, 検索対象の配列);

上記のように、検索したい値と検索対象の配列をカンマ区切りで指定します。

値が見つかった→ true
値が見つからない→ false

検索結果はtruefalseで返されます。

in_array関数で型も含めて検索

型まで含めてより厳密に検索するためには、第三引数にtrueを設定します。

見つかりません!

同じ19でも文字列型を数値型で検索したため、違う文字としてfalseが返されてしまいましたね。

文字列型の'19'と数値型の19は別の文字と判定されました。

なぜ厳密に検索しないといけないかというと、PHP特有の型の自動変換があるからです。

この自動変換で、思わずハマってしまうこともあるので注意したいです。

以下のコードを見てください。

175rさんようこそ!

変数$textに「175」を格納し、in_array()を使って「175r」を検索しようとしています。

もちろん「175」と「175r」は違うと出なければいけないのに、何故か「175rさんようこそ!」と同じ値として処理しています。

これは文字列型と数値型を比較した際、PHPは数値型に自動変換するため、'175r'175と変換してしまったんですね。

参考:比較演算子「==」で文字列比較

文字列を数値で検索する際、ハマるポイントなので、そういう時は型まで厳密に検索します。

in_array()にかぎらず、PHPではよくあることなので注意しましょう。

array_search関数で配列を検索し、キーを取得する

配列の中から「横浜」を検索し、見つかったらキーを表示させてみましょう。

2

配列には0から始まる自動連番のキーが割り振られているため、'福岡'に振られたキー2が表示されましたね。

array_search関数の構文

array_search(探す値, 検索対象の配列);

in_array()と同様、上記のように、検索したい値と検索対象の配列をカンマ区切りで指定します。

値が見つかった→ 対応するキーを返す
値が見つからない→ FALSEを返す

検索結果は値に対応するキーを返します。

値が複数見つかった場合、最初のキー1個だけしか返してくれないので、注意しましょう。

すべてのキーを返したい場合は、以下のarray_keys()を使います。

参考:PHPで配列のキーを取得する(array_keys)

値を厳密に検索したい場合は、in_array()同様、第三引数にtrueを設定してください。

array_search関数で連想配列も検索する

array_search()は連想配列も検索できます。

kanagawa

横浜のキーであるkanagawaが表示されましたね。

連想配列も簡単に検索することができます。

検索する値が複数見つかるか等、場合によってarray_search()array_keys()を使い分けましょう。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメント

  1. なっぱ より:

    このテキストエディタは何ですか?
    よかったら教えてください。お願いします。

    1. nir87 より:

      コードを表示している黒い画面でしょうか?
      これはwordpressのプラグイン「Crayon Syntax Highlighter」を使っています。

コメントを残す

*