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

Я хотел бы сделать вышеприведенный массив таким, как показано ниже. Может ли кто-нибудь мне помочь?Удалить пустой элемент значения в массиве

Большое спасибо

Array 
    (
     [0] => 0 
    ) 
+7

Каковы эти пустые значения? Являются ли они ложными, NULL, пустые строки или что-то еще? Как насчет 0? Является ли это целым числом 0 или строкой «0»? Используйте 'var_dump()' в вашем массиве, чтобы определить типы значений. – BoltClock

+1

Пожалуйста, определите 'empty value'. – xdazz

ответ

19

Вы можете использовать array_filter удалить пустое значение (NULL, ложь, '', 0):

array_filter($array); 

Если вы не хотите, чтобы удалить 0 из вашего массив см @ ответ Sabari в:

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

Не знал, что второй аргумент является необязательным, это опрятно. – Gajus

+0

@ Zulkhaery Basrul, array_filter будет считать значение 0 пустым значением, поэтому конечный результат - это пустой массив, который не то, что я хочу – Acubi

+0

@Acubi: обновил мой ответ. –

5

Вы можете использовать:

удалить только пустые значения:

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

удалить ложные ценности:

$new_array_without_nulls = array_filter($array_with_nulls); 

Надеется, что это помогает :)

+0

p.s. он также удаляет ложные логические элементы ... – 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

Это типичный случай для array_filter. Сначала необходимо определить функцию, которая возвращает TRUE если значение должно быть сохранено и FALSE, если она должна быть удалена:

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

    return FALSE; 
} 

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

Затем нужно указать в функции обратного вызова (здесь preserve), что пусто, а что нет. Вы специально не задали свой вопрос, поэтому вам нужно сделать это самостоятельно.

0

быстрый способ найти номера также Зеро (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 

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