使用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];$keys = array_keys(array_filter($array));
// 结果:['name', 'job', 'active']
注意:array_filter() 在不传回调函数时,会自动过滤“假值”(falsy values),包括:
– null
– ""(空字符串)
– 0
– false
– [](空数组)
仅排除 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' => '']];$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或空字符串的键名列表方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1338371.html
微信扫一扫
支付宝扫一扫