【发布时间】:2014-01-07 17:32:20
【问题描述】:
我有一个数组
数组([0] => 0 [1] => [2] => 3 [3] => )
我想从中删除空值,结果应该是这样的
数组 ([0] => 0 [1] => 3) 我不想从数组中删除 0 值。
【问题讨论】:
-
php.net/array_filter 带有自定义回调。
-
在 php.net 上查找数组过滤器
我有一个数组
数组([0] => 0 [1] => [2] => 3 [3] => )
我想从中删除空值,结果应该是这样的
数组 ([0] => 0 [1] => 3) 我不想从数组中删除 0 值。
【问题讨论】:
这样就可以了:
array_filter($arr, static function($var){return $var !== null;} );
对于旧版本(php
function is_not_null ($var) { return !is_null($var); }
$filtered = array_filter($arr, 'is_not_null');
【讨论】:
array_filter($arr); 默认会移除 null。
empty() 的所有内容-而不仅仅是NULL。
您可以使用 array_filter() 来删除数组中的 null 空值
print_r(array_filter($arr, 'strlen'));
【讨论】:
你现在陷入了一个麻烦的世界,因为要区分 null 与 0 与 false 与 "" 与 0.0 并不太容易。不过不用担心,是可以解决的:
$result = array_filter( $array, 'strlen' );
这本身很可怕,但似乎有效。
编辑:
这是一个糟糕的建议,因为这个技巧依赖于一个奇怪的极端情况:
你应该这样做的方式是这样的:
$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"));
这很好读。
【讨论】:
<?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
)
【讨论】:
简单
$keys=array_keys($yourArray,NULL);
if(!empty($keys))
{
foreach($keys as $key)
{
unset($yourArray[$key]);
}
}
var_dump($yourarray);
【讨论】: