array_filter() 默认过滤所有假值(false、null、0、0.0、''、[]),保留原键名;需连续索引可加array_values();自定义回调可精准排除空字符串、null等特定值。

用 array_filter() 过滤数组中的空值,最简单的方式是直接传入数组,不传回调函数——PHP 会默认用“值转布尔为 false”来过滤,即剔除 false、null、0、0.0、空字符串 ''、空数组 [] 等“空”值。
默认行为:过滤所有“假值”
这是最常用也最简洁的方式:
$arr = [0, 1, '', 'hello', null, [], ['a'], false]; $result = array_filter($arr); // 结果:[1 => 1, 3 => 'hello', 6 => ['a']]
注意:array_filter() 保留原始键名,不会重排索引。如需数字索引连续,可额外套一层 array_values()。
只过滤空字符串和 null,保留 0 和 false
如果业务中 0 或 false 是有效数据(比如状态码、开关标志),就不能依赖默认行为,得写自定义回调:
- 用
===严格判断null和'' - 避免把
0、false、[]误删
$arr = [0, 1, '', 'ok', null, false, []];
$result = array_filter($arr, function($v) {
return $v !== '' && $v !== null;
});
// 结果:[0 => 0, 1 => 1, 3 => 'ok', 5 => false, 6 => []]
过滤“空白字符串”(含空格、制表符等)
如果想把 ' '、"\t\n" 也算作空值,用 trim() 判断:
$arr = ['hello', ' ', "\t", '', 'world'];
$result = array_filter($arr, function($v) {
return trim($v) !== '';
});
// 结果:[0 => 'hello', 4 => 'world']
保留非空且非零的数值(排除 0 和 '0')
有时字符串 '0' 也要视为“空”,尤其来自表单输入时:
-
!$v会把'0'当 false(因为转换后为 0) - 但更明确的做法是同时检查类型和值
$arr = [0, '0', 1, '', '1', null];
$result = array_filter($arr, function($v) {
if ($v === '0' || $v === 0) return false;
return $v !== '' && $v !== null && $v !== [];
});
// 或更通用:return is_scalar($v) && trim((string)$v) !== '';
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











