从多维数组中移除空数组

3

我有一个数组,我在FormValidator类中使用它,但在某些情况下,我最终得到了一个类似以下的数组。但我想从该数组中删除所有空数组,以便在验证中它不会检查空数组中的值,这是低效的。

是否有函数可以从多维数组中删除空数组?

我知道array_filter(),但它似乎只适用于数组元素值。

array(2)
{
  ["recaptcha_response_field"]=>
  array(0) {
  }
  ["terms"]=>
  array(0) {
  }
}
4个回答

15

试试这个- 这将删除数组中的空数组!

$array['recaptcha_response_field'] = array(
   'name'=>'name1',
   'email'=>'email1',
   'empty'=>''
);
$array['terms'] = array(
   'name'=>'name2',
   'email'=>'email2',
   'empty'=>''
);

$array['terms2'] = array();


$array= array_filter(array_map('array_filter', $array));

print_r($array);

OUTPUT-Array
(
    [recaptcha_response_field] => Array
        (
            [name] => name1
            [email] => email1
        )

    [terms] => Array
        (
            [name] => name2
            [email] => email2
        )

)

2
$array = array(array('foo','bar'), array('hi',''), array('',''), array('','hello')); 
$array = array_filter(array_map('array_filter', $array));
print_r($array);

将显示:

数组([0] => Array([0] => foo [1] => bar)[1] => Array([0] => hi)[3] => Array([1] => hello))


1
使用简单的foreacharray_filter,并将count作为回调函数。
foreach($arr as $k=>&$arr)
{
    array_filter($arr,'count');
}
print_r($arr);

工作演示


0
使用 array_filter 函数从数组中删除元素。为了识别 null 元素,触发递归循环。希望它能工作!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接