顺序查找是从数组开头逐个比对直至找到目标或遍历完毕,适用于未排序、小规模(几十至几百)、低频查找场景;时间复杂度O(n),需注意空数组校验,高频查找应改用哈希或索引。
PHP顺序查找就是从数组开头逐个比对,直到找到目标值或遍历完所有元素。它简单直接,适合小数据量或无序数组,不需要提前排序,实现起来不复杂但容易忽略边界处理。
当你的数据没排序、数量不大(比如几十到几百条),或者只查一两次,没必要花时间排序再用二分查找时,顺序查找最合适。比如用户登录时检查用户名是否在白名单里,或后台临时验证一个ID是否存在。
最直观的方式是用 for 循环,手动控制下标,方便返回位置或判断是否找到:
function sequentialSearch($arr, $target) {
for ($i = 0; $i < count($arr); $i++) {
if ($arr[$i] === $target) {
return $i; // 返回首次匹配的索引
}
}
return -1; // 未找到
}
// 使用示例
$users = ['alice', 'bob', 'charlie'];
echo sequentialSearch($users, 'bob'); // 输出 1
注意用 === 而不是 ==,避免类型隐式转换导致误判(比如查找 0 和 false 可能混掉)。
PHP 提供了 array_s
earch(),本质就是顺序查找,代码更少,还支持关联数组:
$index = array_search('bob', $users); // 返回 1
$key = array_search(100, ['a' => 100, 'b' => 200]); // 返回 'a'
// 没找到时返回 false,记得用 !== 判断
if ($index !== false) {
echo "找到了,位置是 $index";
}
它默认比较值,不区分类型(松散比较),如需严格匹配,可传第3个参数 true:array_search('5', [5, 10], true) 就不会匹配成功。
顺序查找时间复杂度是 O(n),最坏情况要扫完整个数组。实际使用中注意几点:
基本上就这些。顺序查找不炫技,但够用、好懂、不易出错,是 PHP 开发里很实在的基本功。