2013-10-11 2 views
0

Мне нужна функция для удаления массива, который содержит пустой элемент из многомерного массива в php, предположим, что следующий мой массив здесь мне нужно узнать и удалить массив [1] и array [2], поскольку элемент empty не имеет значения.Как удалить пустой массив из многомерного массива в php

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

когда я делаю

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

print_r($array); 

я получил результат

Array 
(
    [0] => Array 
     (
      [name] => name1 
      [email] => email1 
      [empty]=> NOT_EMPTY 
     ) 

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

    [2] => Array 
     (
     ) 

) 

НО ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ

Array 
(

    [0] => Array 
     (
      [name] => name2 
      [email] => email2 
      [empty]=> NOT_EMPTY 
     ) 

) 
+0

Мы также должны видеть скрытые 'array_filter()' код функции, чтобы понять, как вы получаете результаты. –

+0

это встроенная функция – nikki

ответ

1

array_filter() по себе только unset клет, которые приравнивают к е alse, а не весь массив. Вы будете нуждаться в цикле, и если какой-либо массив отсутствует элемент, то незадана массив, как:

foreach($array as $key => $a){ 
    if(count(array_filter($a)) < count($a)){ 
    unset($array[$key]); 
    } 
} 

есть, вероятно, лучший способ, я просто в

Смежные вопросы