array_keys()用于获取数组所有键名,支持全量提取和按值筛选;返回键名数组保持原顺序,但数字字符串键与数字键冲突时仅保留一个;非数组输入需预检避免警告。

array_keys() 是 PHP 中专门用来获取数组所有键名的函数,用法非常简单直接。
基本用法:取出全部键名
只需传入一个数组,它就会返回包含所有键名的新数组:
- 对于关联数组,返回所有字符串键名
- 对于索引数组,返回所有数字键(0, 1, 2...)
- 对于混合数组,返回全部键(包括字符串和数字)
示例:
```php$arr = ['name' => 'Tom', 'age' => 25, 'city' => 'Beijing'];
$keys = array_keys($arr);
// 结果:['name', 'age', 'city']
$nums = [10, 20, 30];
$keys2 = array_keys($nums);
// 结果:[0, 1, 2]
```
筛选特定值对应的键名
array_keys() 还支持第二个参数,用于只返回值等于该值的所有键名:
立即学习“PHP免费学习笔记(深入)”;
$data = ['a' => 'apple', 'b' => 'banana', 'c' => 'apple'];
$appleKeys = array_keys($data, 'apple');
// 结果:['a', 'c']
```
第三个可选参数 true 表示严格比较(类型+值),默认是松散比较。
注意键名类型和顺序
返回的键名数组保持原数组的遍历顺序,但不保留原始键的类型映射关系——它只是把键“列出来”。比如:
```php$mixed = [0 => 'x', '0' => 'y', 'a' => 'z'];
$ks = array_keys($mixed);
// 结果:[0, 'a'] —— 注意:字符串键 '0' 和数字键 0 冲突,PHP 只保留一个
```
这是因为 PHP 数组中数字形式的字符串键会自动转为整型,与同值数字键视为同一个键。
空数组或非数组输入要小心
如果传入空数组,返回空数组 [];如果传入非数组(如 null、string),会触发警告并返回 false。建议使用前做类型判断:
- 用
is_array($var)预检 - 或配合错误抑制符
@array_keys($var)(不推荐,掩盖问题) - 更稳妥:用
$keys = is_array($var) ? array_keys($var) : [];



















