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