从 PHP 数组中删除 NULL、FALSE 和 '' -但不包括 0

2022-08-30 11:07:47

我想删除 和 值 。NULLFALSE''

我用过,但它也删除了' s。array_filter0

有没有做任何我想做的事的功能?

array(NULL,FALSE,'',0,1) -> array(0,1)

答案 1

array_filter使用相同的比较运算符时应该可以正常工作。

这是一个示例

$values = [NULL, FALSE, '', 0, 1];

function myFilter($var){
  return ($var !== NULL && $var !== FALSE && $var !== '');
}

$res = array_filter($values, 'myFilter');

或者,如果您不想定义过滤函数,也可以使用匿名函数(闭包):

$res = array_filter($values, function($value) {
    return ($value !== null && $value !== false && $value !== ''); 
});

如果您只需要数值,则可以使用is_numeric作为回调:示例

$res = array_filter($values, 'is_numeric');

答案 2

http://php.net/manual/en/function.array-filter.php#111091

如果要删除 NULL、FALSE 和空字符串,但保留值为 0,则可以使用 strlen 作为回调函数:

array_filter($array, 'strlen');