【发布时间】:2017-09-13 22:52:25
【问题描述】:
我想从递归数组中删除所有 null 或空白值,但不是 false 和 0 值。
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 bcz 我想过滤多维数组
-
您使用 is_null() 函数,但它仅在您将变量设置为 NULL 时才有效。要获得所需的结果,请使用 empty()
-
empty() 删除 false 或 0 值,但我不想删除 0 或 false 值
标签: php arrays recursion multidimensional-array