如何从数组中删除空值?

use*_*158 35 php arrays

我有一个阵列

数组([0] => 0 [1] => [2] => 3 [3] =>)

我想从中删除空值,结果应该是这样的

数组([0] => 0 [1] => 3)我不想从数组中删除0值.

flo*_*oww 63

这样就可以了:

array_filter($arr, function($var){return !is_null($var);} );
Run Code Online (Sandbox Code Playgroud)

代码示例:http://3v4l.org/icEDa


对于旧版本(php <5.3):

function is_not_null ($var) { return !is_null($var); }
$filtered = array_filter($arr, 'is_not_null');
Run Code Online (Sandbox Code Playgroud)

代码示例:http://3v4l.org/CKrYO

  • 仅适用于较新版本,但这比奇怪的strlen更好. (2认同)
  • 对于旧版本,可以预先声明所使用的功能. (2认同)
  • 你可以完全排除第二个参数; `array_filter($ arr);`默认会删除`null`. (2认同)
  • @AlexP不,你错了。如https://3v4l.org/Y9KCX所示,您的解决方案将删除所有为“ empty()”的内容-不只是NULL。 (2认同)
  • @AlexP:如果关闭过滤器功能,则将删除字符串“ 0”。 (2认同)

Mr.*_*ien 24

您可以使用array_filter()哪个将从数组中删除空值

print_r(array_filter($arr, 'strlen'));
Run Code Online (Sandbox Code Playgroud)

  • 这也删除了 '0'、false 或 falsey 值,通常可能已经忘记了其他值。 (2认同)

cas*_*raf 5

你可以循环它.

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

键盘

如果要重新索引数组以删除键之间的间隙,可以使用新数组:

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

键盘