php array_filter表示“False”值

时间:2016-06-08 22:47:09

标签: php arrays

我在php中使用array_filter

$new_array = array_filter($updated, "check_if_value_is_null_or_false");

function check_if_value_is_null_or_false($val) {
    return !is_null($val);       
};

我了解我可以使用is_null来过滤掉null值的任何内容。

我还想为字符串"False"添加一个条件作为值。

我如何修改上述内容?

2 个答案:

答案 0 :(得分:8)

你可以自己做回调

function is_not_null_or_false($value) {
  return !(is_null($value) || $value === false);
}

array_filter($updated, 'is_not_null_or_false');

或者您可以跳过单独的功能并执行

array_filter($updated, function($x) { return !(is_null($x) || $x === false); });

修改

看来你正在寻找字符串 "False"而不是布尔值

array_filter($updated, function($x) { return !(is_null($x) || $x === "False"); });

编辑2

为了便于阅读,我们改变了

!is_null($x) && $x !== "False"

!(is_null($x) || $x === "False")

根据De Morgan's Laws,这些是等价的,但第二个可能读得更好,特别是考虑到函数的名称。

答案 1 :(得分:-2)

请查看此示例:

function check_if_value_is_null_or_false($val) {
    return !empty($val);
};

更多信息: http://php.net/manual/en/types.comparisons.php 当变量为null且为false时,empty()返回TRUE。