我想从递归数组中删除所有空或空值,但不是false和0值。筛选递归数组,只删除NULL值
function isNotNull($val) {
if(is_array($val)) {
$ret = array_filter($val, 'isNotNull');
return $ret;
} else {
return (!is_null($val) && $val !== '');
}
}
$ arr = array_filter($ arr,'isNotNull');
输入:
$arr = array(
"stringKey" => "Abc",
"boolKey" => false,
"zeroKey" => 0,
"blankKey" => '',
"newArr" => array(
"stringKey2"=>"Abc2",
"boolKey2"=>false,
"zeroKey2" => 0,
"blankKey2"=>"",
"blankArr" => array()
)
);
这给输出:
Array
(
[stringKey] => Abc
[boolKey] =>
[zeroKey] => 0
[newArr] => Array
(
[stringKey2] => Abc2
[boolKey2] =>
[zeroKey2] => 0
[blankKey2] =>
[blankArr] => Array
(
)
)
)
但我想吼叫输出:
Array
(
[stringKey] => Abc
[boolKey] =>
[zeroKey] => 0
[newArr] => Array
(
[stringKey2] => Abc2
[boolKey2] =>
[zeroKey2] => 0
)
)
我用array_filter用回调函数,但它只能过滤简单的数组不是多维数组。我不想使用循环。
你的回调函数的调用内部的回调函数。为什么? – diavolic
@diavolic bcz我想过滤多维数组 –
您使用is_null()函数,但它只适用于将变量设置为NULL的情况。为了得到需要的结果,使用empty() – diavolic