2012-01-30 22 views
8
Array 
    (
     [0] => 0 //value is int 0 which isn;t empty value 
     [1] =>  //this is empty value 
     [2] =>  //this is empty value 
    ) 

Chciałbym, aby powyższa tablica była następująca, Czy ktoś może mi pomóc?Usuń element pustej wartości w tablicy

Dziękujemy

Array 
    (
     [0] => 0 
    ) 
+7

Jakie są te puste wartości? Czy są fałszywe, NULL, puste struny lub coś innego? A co z 0? Czy jest to liczba całkowita 0, czy ciąg "0"? Użyj 'var_dump()' w tablicy, aby określić typy wartości. – BoltClock

+1

Proszę zdefiniować 'pustą wartość'. – xdazz

Odpowiedz

19

Można użyć array_filter usunąć pustą wartość (null, false, '', 0):

array_filter($array); 

Jeśli nie chcesz, aby usunąć ze swojego 0 tablicy, patrz @ odpowiedź Sabari za:

array_filter($array,'strlen'); 
+3

Nie wiedziałem, że drugi argument jest opcjonalny, to zgrabny. – Gajus

+0

@Zulkhaery Basrul, array_filter by pomyślał, że wartość 0 jest pustą wartością, więc ostatecznym wynikiem jest pusta tablica, która nie jest tym, co chcę – Acubi

+0

@Aububi: zaktualizowałem moją odpowiedź. –

5

można użyć:

usunąć tylko wartości NULL:

$new_array_without_nulls = array_filter($array_with_nulls, 'strlen'); 

usunąć fałszywe wartości:

$new_array_without_nulls = array_filter($array_with_nulls); 

Nadzieja to pomaga :)

+0

p.s. usuwa też "false" booleans ... – Norris

1
array_filter($array, function($var) { 
    //because you didn't define what is the empty value, I leave it to you 
    return !is_empty($var); 
}); 
0

to typowy przypadek array_filter. Trzeba najpierw zdefiniować funkcję, która zwraca TRUE jeśli wartość powinna być zachowana i FALSE czy powinien on zostać usunięty:

function preserve($value) 
{ 
    if ($value === 0) return TRUE; 

    return FALSE; 
} 

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

następnie określić w funkcji zwrotnej (tutaj preserve) co jest pusta, a co nie. Nie napisałeś dokładnie tego pytania, więc musisz to zrobić sam.

0

szybki sposób znaleźć numery również zero (0)

var_dump( 
      array_filter(array('0',0,1,2,3,'text') , 'is_numeric' ) 
     ); 
/* 
print : 
array (size=5) 
    0 => string '0' (length=1) 
    1 => int 0 
    2 => int 1 
    3 => int 2 
    4 => int 3 

*/