2016-01-14 4 views
-1

Я хочу удалить пустые и нулевые значения из массива $listValues. Здесь я удаляю пустые значения, используя array_filter. Пример кода:Как удалить пустые и нулевые значения из массива в php?

$listValues = array("one", "two", "null","three","","four","null"); 
$resultValues = array_filter($listValues); 

echo "<pre>"; 
print_r($resultValues); 
echo "</pre>"; 

Результат:

Array ([0] => one [1] => two [2] => null [3] => three [5] => four [6] => null) 

Но я хочу

Array ([0] => one [1] => two [3] => three [5] => four) 

Любой совет высоко оценили.

+1

Просто нанесите анонимную функцию 'array_filter()' для фильтрации что вы хотите – Rizier123

+0

Я отредактировал свой вопрос –

+0

Проверьте мой ответ plz –

ответ

4

попробуйте это: используйте array_diff() функция сравнивает значения двух (или более) массивов, и возвращает разницу. удалить null и "". если вам нужно удалить еще некоторое поле, то добавить, что значения внутри массива

<?php 
$listValues = array("one", "two", "null","three","","four","null"); 
echo "<pre>"; 
$a=array_values(array_diff($listValues,array("null",""))); 
print_r($a); 
echo "</pre>"; 
?> 

выход:

Array 
(
    [0] => one 
    [1] => two 
    [2] => three 
    [3] => four 
) 

см http://www.w3schools.com/php/func_array_diff.asp

+0

Спасибо Vigneswaran S Это отлично работает! –

1

Попытка array_filter со вторым параметром в качестве определенного пользователя функции, например так:

$listValues = array("one", "two", "null","three","","four","null"); 
print_r(array_filter($listValues, "filter")); 
function filter($elmnt) { 
    if ($elmnt != "null" && $elmnt != "") { 
     return $elmnt; 
    } 
} 
+0

Спасибо! Он работает нормально. –

0

использовать этот код, Сначала я скорректировал индекс массива, то неустановленные значения нулевых из массива, то скорректированные индексы массива снова:

$listValues = array("one", "two", "null","three","","four","null"); 
$listValues = array_values($listValues); 
$temp = $listValues; 

for($loop=0; $loop<count($listValues); $loop++){ 
    if($listValues[$loop] == "" || $listValues[$loop] == "null"){ 
     unset($temp[$loop]); 
    } 
} 

$listValues = $temp; 
$listValues = array_values($listValues); 
echo "<pre>"; 
print_r($listValues); 
echo "</pre>"; die; 

Но, если вы хотите же индексы, чтобы получить этот результат:

Array ([0] => one [1] => two [3] => three [5] => four) 

Тогда не используйте перед <pre>:

$listValues = array_values($listValues); 
Смежные вопросы