从多维数组中删除空数组

时间:2014-04-16 11:07:23

标签: php arrays multidimensional-array

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

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

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

array(2)
{
  ["recaptcha_response_field"]=>
  array(0) {
  }
  ["terms"]=>
  array(0) {
  }
}

5 个答案:

答案 0 :(得分:12)

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

$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
        )

)

答案 1 :(得分:1)

使用简单的foreach array_filtercount作为回拨函数。

foreach($arr as $k=>&$arr)
{
    array_filter($arr,'count');
}
print_r($arr);

Working Demo

答案 2 :(得分:1)

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

将显示:

  

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

答案 3 :(得分:0)

使用array_filter函数从数组中删除元素。识别null元素的fire recursive loop。希望它会奏效!

答案 4 :(得分:0)

您应该使用array_filter。选中此example