顺序查找是从数组开头逐个比对直至找到目标或遍历完毕,适用于未排序、小规模(几十至几百)、低频查找场景;时间复杂度O(n),需注意空数组校验,高频查找应改用哈希或索引。

PHP顺序查找就是从数组开头逐个比对,直到找到目标值或遍历完所有元素。它简单直接,适合小数据量或无序数组,不需要提前排序,实现起来不复杂但容易忽略边界处理。
什么时候该用顺序查找
当你的数据没排序、数量不大(比如几十到几百条),或者只查一两次,没必要花时间排序再用二分查找时,顺序查找最合适。比如用户登录时检查用户名是否在白名单里,或后台临时验证一个ID是否存在。
- 数组未排序,且不打算为查找专门排序
- 查找频率低,或数组变动频繁(排序成本反而更高)
- 代码要简洁易懂,维护优先于性能
基础写法:for循环遍历
最直观的方式是用 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免费学习笔记(深入)”;
更简洁的写法:用内置函数
PHP 提供了 array_search(),本质就是顺序查找,代码更少,还支持关联数组:
$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),最坏情况要扫完整个数组。实际使用中注意几点:
- 空数组或 null 输入要提前检查,避免 count() 报错或 foreach 警告
- 如果经常查找,考虑用 in_array() 判断存在性(不关心位置),它底层也是顺序扫描,但语义更清晰
- 大数据量(如上万条)且查找频繁,建议改用哈希结构(如键值对数组)或数据库索引,而不是硬扛顺序查找
基本上就这些。顺序查找不炫技,但够用、好懂、不易出错,是 PHP 开发里很实在的基本功。











