检查数组键是否存在并且在同一命令中是否真实?

Check if array key exists and is truthy in same command?

在 JavaScript 中,可以检查 myObject.key 以查看值是否存在(不是未定义) 是否真实。

if (myObject.key) ...

是否有 PHP 等价物?还是我必须继续编写 isset(my_array['key']) && my_array['key'] 之类的代码才能达到预期的结果?感觉违反了DRY,看起来很丑。

签入了三个"levels" php:

  1. array_key_exists($key, $array) - http://php.net/manual/en/function.array-key-exists.php

检查数组中是否存在键。 Returns 即使值为空也为真

  1. isset($array[$key]) - http://php.net/manual/en/function.isset.php

检查键是否存在且不为空 - Returns如果值存在且不为空则为真,但它可以是 bool(false)、int(0)、string "" 等.

  1. !empty($array[$key]) - http://php.net/manual/en/function.empty.php

检查键是否存在且为真,returns bool(false)、int(0)、不存在的键和 null 为 false,但 bool(true)、int(1) 为真, int(-1), 长度 > 0 的字符串等等。其实这个函数就是empty(),不过也经常用negated。这应该是您要搜索的内容。

您可以使用错误抑制运算符@:

if (@$_GET['fantasyvar']) {
    //$_GET['fantasyvar'] is set and truthy
}

注意:这种风格不好,会使调试变得更加困难。