Ric*_*-MX 9 php string filtering multidimensional-array isnullorempty
我一直在寻找很多答案,但没有一个能为我工作.
这是分配给我的$quantities数组的数据:
Array(
[10] => Array([25.00] => 1)
[9] => Array([30.00] => 3)
[8] => Array([30.00] => 4)
[12] => Array([35.00] => )
[1] => Array([30.00] => )
[2] => Array([30.00] => )
)
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来删除具有空值的子数组,[12] [1]并[2]保留其他所有内容.
期望的结果:
Array(
[10] => Array([25.00] => 1)
[9] => Array([30.00] => 3)
[8] => Array([30.00] => 4)
)
Run Code Online (Sandbox Code Playgroud)
我在官方php文档上尝试了很多功能,但没有一个能够工作.
我用过这个:
function array_filter_recursive($array, $callback = null) {
foreach ($array as $key => & $value) {
if (is_array($value)) {
$value = array_filter_recursive($value, $callback);
} else {
if ( ! is_null($callback)) {
if ( ! $callback($value)) {
unset($array[$key]);
}
} else {
if ( ! (bool) $value) {
unset($array[$key]);
}
}
}
}
unset($value);
return $array;
}
Run Code Online (Sandbox Code Playgroud)
但它只删除了子阵列中的元素; 我需要完全删除子阵列.
我不想要这个:
Array(
[10] => Array([25.00] => 1)
[9] => Array([30.00] => 3)
[8] => Array([30.00] => 4)
[12] => Array()
[1] => Array()
[2] => Array()
)
Run Code Online (Sandbox Code Playgroud)
小智 12
有点晚,但可能会帮助某人寻找相同的答案.我用这个非常简单的方法;
$postArr = array_map('array_filter', $postArr);
$postArr = array_filter( $postArr );
Run Code Online (Sandbox Code Playgroud)
以下功能适用于我的情况。我们可以使用一个简单的递归函数从多维 PHP 数组中删除所有空元素:
function array_filter_recursive($input){
foreach ($input as &$value){
if (is_array($value)){
$value = array_filter_recursive($value);
}
}
return array_filter($input);
}
Run Code Online (Sandbox Code Playgroud)
然后我们只需要调用这个函数:
$myArray = array_filter_recursive($myArray);
Run Code Online (Sandbox Code Playgroud)