array_search

関数の概要

PHPの array_search 関数は、指定した値が配列の中に存在するかどうかを調べ、その値が見つかった場合に対応するキーを返します。配列の中から値を検索したいときに非常に便利な関数です。キーが見つからなければ false を返します。

パラメータの説明

  • needle:検索したい値を指定します。
  • haystack:検索対象の配列を指定します。
  • strict(省略可能):型の比較を厳密に行うかどうかを指定します。true にすると型も一致するかチェックし、デフォルトは false です。

戻り値

検索した値が見つかった場合、その値に対応する配列のキーを返します。キーの型は元の配列のキーに準じます。見つからなかった場合は false を返します。キーとして 0 や空文字列が返ることもあるため、戻り値の判定は === false を使って厳密に行うのが推奨されます。

使用例

基本的な使い方

<?php
$array = ['apple', 'banana', 'cherry'];
$result = array_search('banana', $array);
var_dump($result); // int(1)
?>

この例では、配列 $array の中から値 'banana' を検索し、キーの 1 が返されます。

連想配列での検索

<?php
$fruits = ['a' => 'apple', 'b' => 'banana', 'c' => 'cherry'];
$key = array_search('cherry', $fruits);
var_dump($key); // string(1) "c"
?>

連想配列の場合も同様に値を検索でき、その値に対応するキー(ここでは「c」)が返されます。

型を厳密に比較する場合

<?php
$array = [true, false, 0, '0'];
$key = array_search(0, $array, true);
var_dump($key); // int(2)
?>

strict パラメータを true にすると型も比較されるため、値と型が完全に一致した要素のキーが返されます。ここでは「0」という整数と同じ型の値があるキー「2」が返されます。

見つからない場合の戻り値

<?php
$array = ['apple', 'banana', 'cherry'];
$key = array_search('grape', $array);
var_dump($key); // bool(false)
?>

検索した値が配列に存在しない場合は false を返します。

関連する関数

  • in_array — 配列に特定の値が存在するか調べる
  • array_keys — 配列から指定した値に対応するすべてのキーを取得する
  • array_key_exists — 指定したキーが配列に存在するか確認する

まとめ

array_search は配列内で値を探し、そのキーを返す便利な関数です。実務で配列の中から特定の値の位置(キー)を取得したい場合に非常に役立ちます。特に厳密な型比較が必要な時は、第三引数の stricttrue にすることを忘れないようにしましょう。戻り値が false の場合とキーが 0 の場合の判定は厳密な比較(=== false)で行うのがポイントです。