Подтвердить что ты не робот

Как удалить нулевые значения из массива?

У меня есть массив

Массив ([0] = > 0 [1] = > [2] = > 3 [3] = > )

Я хочу удалить из него нулевые значения, и результат должен выглядеть следующим образом:

Массив ([0] = > 0 [1] = > 3) Я не хочу удалять значение 0 из массива.

4b9b3361

Ответ 1

это сделает трюк:

array_filter($arr, function($var){return !is_null($var);} );

Пример кода: http://3v4l.org/icEDa


для более старых версий (php < 5.3):

function is_not_null ($var) { return !is_null($var); }
$filtered = array_filter($arr, 'is_not_null');

Пример кода: http://3v4l.org/CKrYO

Ответ 2

Вы можете использовать array_filter(), который избавится от пустых нулевых значений из массива

print_r(array_filter($arr, 'strlen'));

Ответ 3

Вы можете просто пропустить его.

<?php 
foreach ($array as $i=>$row) {
    if ($row === null)
       unset($array[$i]);
}

CodePad

Если вы хотите переиндексировать массив, чтобы удалить промежутки между ключами, вы можете просто использовать новый массив:

<?php
$array2 = array();
foreach ($array as $row) {
    if ($row !== null)
       $array2[] = $row;
}
$array = $array2;

CodePad

Ответ 4

<?php 
$arr = array( 0 => 0, 1=>null, 2=>3, 3=>null); 
foreach ($arr as $key=>$val) {
    if ($val === null)
       unset($arr[$key]);
}
$new_arr = array_values($arr);
print_r($new_arr);
?>

Вывод:

Array
(
    [0] => 0
    [1] => 3
)

Ответ 5

Теперь вы находитесь в мире проблем, потому что не так просто отличить нуль от 0 от false от "" от 0.0. Но не волнуйтесь, это разрешимо:

 $result = array_filter( $array, 'strlen' );

Это ужасно само по себе, но, похоже, работает.

EDIT:

Это плохой совет, потому что трюк опирается на странный угловой случай:

  • strlen (0) будет strlen ( "0" ) → 1, таким образом, true
  • strlen (NULL) будет strlen ("") → 0, поэтому false
  • strlen ( ") будет strlen ((" ") → 0, таким образом, false и др.

Как вы это делаете, это примерно так:

 $my_array = array(2, "a", null, 2.5, NULL, 0, "", 8);

 function is_notnull($v) {
    return !is_null($v);
  }

 print_r(array_filter($my_array, "is_notnull"));

Это хорошо читаемо.

Ответ 6

просто

$keys=array_keys($yourArray,NULL);
if(!empty($keys))
{
foreach($keys as $key)
{
unset($yourArray[$key]);
}
}
var_dump($yourarray);