最常用方式是array_keys()返回所有键;需找某值对应键用array_search()并严格判断false;遍历推荐foreach($arr as $key=>$value);慎用key()+next()手动指针操作。

直接用 array_keys() 拿所有下标
最常用也最直观的方式就是 array_keys(),它返回一个包含原数组所有键(下标)的新数组。注意:它不区分数字键还是字符串键,都照单全收。
常见错误是以为它能“按值找单个键”——其实它默认返回全部键;如果只想找某个值对应的键,得配合 array_search() 用。
- 对关联数组:
array_keys($arr)返回所有字符串键 - 对索引数组:
array_keys($arr)返回0, 1, 2...这类整数 - 想保留键值映射关系?加第二个参数
true可启用严格比较(比如区分"1"和1)
用 array_search() 找某个值对应的第一个下标
当你知道数组里有个值(比如 "apple"),想反查它在哪儿出现过,array_search() 是标准解法。它只返回**第一次匹配到的键名**,没找到就返回 false。
容易踩的坑是没处理返回值类型:false 和 0 或 "" 在松散比较下会相等,所以判断时务必用 === false。
立即学习“PHP免费学习笔记(深入)”;
- 示例:
$key = array_search("apple", $fruits); - 安全判断写法:
if ($key !== false) { ... } - 它不支持查找多个匹配项;要找全部,得用
foreach遍历手动收集
遍历时用 foreach 的 $key => $value 语法
这是最灵活、最可控的方式,尤其适合边查下标边做逻辑处理。每次迭代都能拿到当前元素的键和值,不需要额外函数调用。
性能上比先 array_keys() 再 foreach 略优,因为避免了生成中间数组;但如果你只需要下标本身、不关心值,那 array_keys() 更简洁。
- 写法:
foreach ($arr as $key => $value) { echo $key; } - 注意:
$key类型取决于原数组——可能是int,也可能是string - 如果数组有重复值,
array_search()只能取第一个,而foreach能逐个处理所有出现位置
数字索引数组慎用 key() + next() 手动遍历
key() 返回当前内部指针指向的键,next() 移动指针到下一个元素——这套组合只适合需要精确控制遍历节奏的场景,比如实现自定义迭代器或跳过某些项。
绝大多数情况下没必要这么干:易出错、可读性差、且 PHP 数组内部指针状态容易被其他函数(如 current()、reset())意外改变。
- 必须重置指针才能从头开始:
reset($arr) - 空数组调用
key()会返回null,需提前判断 - 现代 PHP 开发中,优先选
foreach或函数式方法(如array_keys()),除非真有指针控制需求
array_keys(),也别在简单场景里硬上指针操作。











