php获取数组下标索引集的常见方法
在php中,数组分为索引数组和关联数组两种类型,获取数组的下标索引集是日常开发中非常高频的操作,比如需要对数组的键做二次处理、判断某个键是否存在、批量操作键名等场景都会用到。下面介绍几种常用的实现方式。

使用array_keys函数获取所有下标
array_keys是php内置的专门用于获取数组所有键名的函数,它会返回一个包含所有键名的新数组,不管是索引数组还是关联数组都可以使用,这也是最推荐的方法。
函数的基本语法是:
<?php /** * array_keys函数语法 * @param array $array 需要获取键名的原数组 * @param mixed $search_value 可选参数,如果指定该值,则只返回对应值的键名 * @param bool $strict 可选参数,是否严格比较类型和值,默认false * @return array 包含所有键名的数组 */ array_keys(array $array, $search_value = null, bool $strict = false): array ?>
下面是具体的使用示例:
<?php // 索引数组示例 $index_array = ['a', 'b', 'c', 'd']; $index_keys = array_keys($index_array); print_r($index_keys); // 输出:Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 ) echo PHP_EOL; // 关联数组示例 $assoc_array = ['name' => '张三', 'age' => 20, 'city' => '北京']; $assoc_keys = array_keys($assoc_array); print_r($assoc_keys); // 输出:Array ( [0] => name [1] => age [2] => city ) ?>
指定值筛选获取对应下标
array_keys函数支持第二个参数,传入指定值后,只会返回对应值的键名集合,适合需要筛选特定值对应下标的场景。
<?php $fruit_array = ['apple', 'banana', 'apple', 'orange', 'apple']; // 获取所有值为apple的下标 $apple_keys = array_keys($fruit_array, 'apple'); print_r($apple_keys); // 输出:Array ( [0] => 0 [1] => 2 [2] => 4 ) echo PHP_EOL; // 严格模式示例,类型不同不会匹配 $mixed_array = [1, '1', 2, '2']; $strict_keys = array_keys($mixed_array, 1, true); print_r($strict_keys); // 输出:Array ( [0] => 0 ),字符串'1'不会被匹配 ?>
手动遍历数组获取下标
除了使用内置函数,也可以通过手动遍历数组的方式获取下标,这种方式适合需要在获取下标的同时做一些额外逻辑处理的场景。
<?php
$test_array = ['id' => 1001, 'score' => 95, 'class' => '三年级'];
$manual_keys = [];
foreach ($test_array as $key => $value) {
// 可以在这里添加额外的逻辑,比如过滤某些键
if ($key != 'score') {
$manual_keys[] = $key;
}
}
print_r($manual_keys);
// 输出:Array ( [0] => id [1] => class )
?>
不同方法的适用场景对比
为了帮助开发者选择合适的方法,下面整理了不同获取下标方法的适用场景对比:
| 方法 | 适用场景 | 优势 |
|---|---|---|
| array_keys无参数调用 | 需要获取数组所有下标,无额外筛选逻辑 | 语法简单,执行效率高,内置函数稳定性好 |
| array_keys带筛选参数 | 需要获取指定值对应的所有下标 | 无需手动遍历筛选,代码更简洁 |
| 手动遍历获取 | 获取下标的同时需要添加额外过滤或处理逻辑 | 灵活性高,可自定义处理规则 |
注意事项
- array_keys函数仅支持数组类型的参数,如果传入非数组会抛出警告,使用前最好先通过is_array判断变量类型。
- 索引数组的下标默认是从0开始的整数,关联数组的下标是自定义的字符串,array_keys都会正常返回。
- 如果原数组的键名是特殊类型,比如整数和字符串混合,array_keys会按照原数组的键名顺序返回,不会做额外处理。
php数组下标索引array_keys修改时间:2026-07-19 15:30:12