如何让PHP的array_filter保留0和false值仅忽略NULL?
解决PHP array_filter仅移除null值的问题
你遇到的问题根源是PHP的松散比较特性:!= null会把false、0这类“空值”也判定为和null相等,导致它们被错误过滤。要只移除null值,改用严格比较即可,以下是两种常用可行的写法:
方法一:使用严格不等于运算符!==
$filteredData = array_filter($data, fn($datum) => $datum !== null);
!==会同时检查值和类型,只有当元素确实是null类型时才会被过滤,false、0、空字符串等其他值都会被保留。
方法二:使用is_null()函数
$filteredData = array_filter($data, fn($datum) => !is_null($datum));
is_null()函数本身就是严格判断变量是否为null,逻辑和上面的写法完全一致,只是表达方式不同,按需选择即可。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

