数组示例
如上图所示,array_filter只删除类似'的值。 '没有空格。
对于底部,2值也是空的,但因为它有空格,所以它不会过滤它
有解决方案吗我尝试preg_replace()和trim()也无法删除带空格的空值...
答案 0 :(得分:0)
对于array_filter
,如果未提供callback
,则将删除所有等于FALSE
的数组条目。您可以使用callback
array_filter
参数来执行此操作。
<?php
$array = [
'varA' => '',
'varB' => ' ',
'varC' => '1',
'varD' => ' ',
];
$newArr = array_filter($array, function($v, $k){
return !empty(trim($v));
}, ARRAY_FILTER_USE_BOTH);
var_dump($newArr);
请参阅:http://php.net/manual/en/function.array-filter.php
编辑:
对于多维数组,您可以遍历数组,并为每个元素执行array_filter。对每个元素执行str_replace
不是一个好习惯:这会降低代码速度,并使代码更加复杂。
$array = array(
array(
'varA' => '',
'varB' => ' ',
'varC' => '1',
'varD' => ' ',
),
array(
'varA' => '!!!',
'varB' => ' ',
'varC' => 'xxx',
'varD' => '',
)
);
$newArr = $array;
foreach ($newArr as &$each){
$each = array_filter($each, function($v, $k){
return !empty(trim($v));
}, ARRAY_FILTER_USE_BOTH);
}
var_dump($newArr);