bool in_array(mixed $needle, array $haystack, bool $strict = false)
| 參數 | 說明 |
|---|---|
$needle | 要搜索的值。字符串區分大小寫。 |
$haystack | 目標數組。 |
$strict | 若為 true,同時檢查類型(如 "1" !== 1)。默認 false。 |
找到返回 true,否則 false。
$os = ['Mac', 'NT', 'Irix', 'Linux'];
var_dump(in_array('Irix', $os)); // true
var_dump(in_array('mac', $os)); // false(區分大小寫)
var_dump(in_array('mac', $os, true)); // false
$data = [1, '2', 3, '4'];
var_dump(in_array('2', $data)); // true(鬆散比較)
var_dump(in_array('2', $data, true)); // false(嚴格:字符串 !== 整數)
var_dump(in_array(2, $data, true)); // true
in_array() 不支持多維數組直接搜索,需自行遍歷或使用 array_column() 配合:
$users = [
['id' => 1, 'name' => 'Alice'],
['id' => 2, 'name' => 'Bob'],
];
// 搜索名字
$names = array_column($users, 'name');
var_dump(in_array('Alice', $names)); // true
array_flip() 轉為鍵值對,用 isset($flipped[$val]) 實現 O(1) 查找。// 錯誤:參數順序顛倒 in_array($arr, $val); // Warning: in_array() expects parameter 2 to be array // 錯誤:第一個參數為數組時不會遞歸搜索 in_array(['a'], [['a'], 'b']); // false