检查数组键是否存在并且在同一命令中是否真实?
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:
- array_key_exists($key, $array) - http://php.net/manual/en/function.array-key-exists.php
检查数组中是否存在键。 Returns 即使值为空也为真
- isset($array[$key]) - http://php.net/manual/en/function.isset.php
检查键是否存在且不为空 - Returns如果值存在且不为空则为真,但它可以是 bool(false)、int(0)、string "" 等.
- !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
}
注意:这种风格不好,会使调试变得更加困难。
在 JavaScript 中,可以检查 myObject.key
以查看值是否存在(不是未定义) 和 是否真实。
if (myObject.key) ...
是否有 PHP 等价物?还是我必须继续编写 isset(my_array['key']) && my_array['key']
之类的代码才能达到预期的结果?感觉违反了DRY,看起来很丑。
签入了三个"levels" php:
- array_key_exists($key, $array) - http://php.net/manual/en/function.array-key-exists.php
检查数组中是否存在键。 Returns 即使值为空也为真
- isset($array[$key]) - http://php.net/manual/en/function.isset.php
检查键是否存在且不为空 - Returns如果值存在且不为空则为真,但它可以是 bool(false)、int(0)、string "" 等.
- !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
}
注意:这种风格不好,会使调试变得更加困难。