使用array_filter()结合array_keys()可提取非空值的键名:默认过滤假值(如null、""、0等),或自定义条件排除特定值(如仅排除null和""),多维数组可通过回调函数针对字段判断,最终获取符合条件元素的键名列表。

在 PHP 中,若想从数组中提取非空(即排除 null、空字符串 ""、0、false 等“假值”)的键名,不能直接使用 array_keys() 完成过滤,因为它默认返回所有键。需要结合 array_filter() 先清理值,再用 array_keys() 提取键名。
使用 array_filter() 过滤掉值为空的元素(如 null、""、false、0、[] 等),然后通过 array_keys() 获取剩余元素的键:
$array = [
'name' => 'Alice',
'age' => null,
'city' => '',
'job' => 'Engineer',
'score'=> 0,
'active'=> true
];
<p>$keys = array_keys(array_filter($array));</p><p>// 结果:['name', 'job', 'active']
注意:array_filter() 在不传回调函数时,会自动过滤“假值”(falsy values),包括:
- null
- ""(空字符串)
- 0
- false
- [](空数组)
如果你希望保留值为 0 或 false 的项,只排除 null 和 "",就需要自定义过滤条件:
立即学习“PHP免费学习笔记(深入)”;
$keys = array_keys(array_filter($array, function($value) {
return $value !== null && $value !== '';
}));
这样即使值是 0 或 false,只要不是 null 或空字符串,其键名也会被保留。
如果数组是多维的,比如用户列表,你想找出哪些用户的某个字段(如 email)不为空,也可以类似操作:
$users = [
['name' => 'Alice', 'email' => 'alice@example.com'],
['name' => 'Bob', 'email' => null],
['name' => 'Cindy', 'email' => '']
];
<p>$validEmailKeys = array_keys(array_filter($users, function($user) {
return !empty($user['email']);
}));
// 结果:[0] —— 只有 Alice 的 email 有效
这里使用 !empty() 判断字段是否存在且非空。
基本上就这些方法。根据你对“空值”的定义,选择合适的过滤方式即可。重点是先用 array_filter() 控制保留哪些元素,再用 array_keys() 拿到键名列表。
以上就是php中array_keys忽略空值提取_php过滤掉null或空字符串的键名列表方法的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号