in_array(mixed $needle, array $haystack, bool $strict = false): bool
$needle:要搜索的值。$haystack:目標數組。$strict:true 時同時比較類型與值(===),false(默認)僅比較值(==)。找到返回 true,否則 false。
$people = ["Peter", "Joe", "Glenn", "Cleveland", 23];
var_dump(in_array("Glenn", $people)); // true
var_dump(in_array("23", $people)); // true (字符串 "23" == 整數 23)
var_dump(in_array(23, $people)); // true
var_dump(in_array("23", $people, true)); // false (string !== int)
var_dump(in_array(23, $people, true)); // true
var_dump(in_array("Glenn", $people, true)); // true
var_dump(in_array("glenn", $people, true)); // false
| 場景 | 推薦做法 | 時間複雜度 |
|---|---|---|
| 頻繁查找同一數組 | $flip = array_flip($arr); isset($flip[$val]) | O(1) |
| 大數組、多次查找 | 構建查找表或使用 SplObjectStorage | O(1) |
| 一次性查找、小數組 | in_array() | O(n) |
in_array() 會觸發字符串轉數字比較:in_array("abc", [0]) 返回 true("abc" == 0)。務必在不確定類型時使用 strict=true。array_walk_recursive。