我有一个数组
Array ( [0] => 0 [1] => [2] => 3 [3] => )
我想要从中删除null值,结果应该像这样
Array ( [0] => 0 [1] => 3) 我不想从数组中删除0值。
这样做就能解决问题:
array_filter($arr, static function($var){return $var !== null;} );
针对旧版本(php<5.3):
function is_not_null ($var) { return !is_null($var); }
$filtered = array_filter($arr, 'is_not_null');
array_filter($arr);
默认会删除null
。 - AlexPempty()
的内容 - 不仅仅是 NULL。 - flowwarray_filter()
函数来从数组中删除空值。print_r(array_filter($arr, 'strlen'));
Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated
- mickmackusa现在你可能陷入了麻烦之中,因为要区分 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"));
strlen
不再是一种好的技术,因为它会生成过时警告。Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated
。 - mickmackusa<?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);