array_search 用于按值查找键名,返回匹配值的第一个键名,未找到返回 false;它不查键名,查键名应使用 array_key_exists 或 isset。

array_search 函数在 PHP 中是按值查找键名,不是按键名查找——它本身不支持直接“查找键名”。
它到底做什么?
array_search($needle, $haystack) 在 $haystack 数组中搜索 值等于 $needle 的第一个元素,并返回其对应的键名(key)。如果没找到,返回 false。
注意:它查的是“值”,返回的是“键名”。所以你不能用它来“查找某个键名是否存在”——那是 array_key_exists() 或 isset() 的事。
常见误用与正确替代
- 想判断某个键名是否存在?→ 用 array_key_exists('key', $arr) 或 isset($arr['key'])
- 想根据值找对应键名?→ 才用 array_search('value', $arr)
- 想获取所有匹配该值的键名(不止第一个)?→ 用 array_keys($arr, 'value')
PHP 8.1 下的注意事项
PHP 8.1 没改变 array_search 的行为,但加强了类型安全。如果你传入的 $needle 和数组值类型差异大(比如 int 搜索 string),且没开 strict 模式,它仍做松散比较;若启用 strict(第三个参数设为 true),则必须类型和值都一致才匹配:
// 松散比较(默认):0 == '0' → 匹配
array_search(0, [ 'a' => '0', 'b' => 1 ]) → 返回 'a'
// 严格比较:0 !== '0' → 不匹配
array_search(0, [ 'a' => '0', 'b' => 1 ], true) → 返回 false
简单示例
$arr = ['name' => 'Alice', 'age' => 30, 'city' => 'Beijing'];
// 查值 'Alice' 对应的键 → 'name'
$key = array_search('Alice', $arr); // 返回 'name'
// 查值 30 对应的键 → 'age'
$key = array_search(30, $arr); // 返回 'age'
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











