$key = $_REQUEST[ 'key' ] or $key = false;
在PHP中,我将获得$ key的内容?如果脚本没有收到参数(密钥)怎么办?它会给出错误吗?
一般来说,我如何在PHP中使用或?
此代码来自其他人,我正在模拟它,因为如果没有收到参数,它会抛出500错误。一般来说,我使用@DaOgre建议的解决方案。但我对错误更感兴趣,以及在PHP中使用的正确方法是什么。
答案 0 :(得分:2)
正如迈克尔·伯科斯基(Michael Berkowski)在评论中提到的那样,正在寻找的功能正确的方法可能是使用三元运算符
<snip>
$key = isset($_REQUEST['key']) ? $_REQUEST['key'] : false;
<snip>
检查是否设置了密钥,如果是,则返回第一个值($ _REQUEST ['key']),否则返回fase。
您现在可以在$key
上执行您想要的任何其他逻辑检查。请记住,您应该使用$ _REQUEST清理从中获取的任何传入数据。
答案 1 :(得分:0)
此构造利用了or
运算符短路的事实,这意味着只有在左侧部分评估为true
时才会评估右手部分。因此,它相当于:
if($_REQUEST['key']) {
$key = $_REQUEST['key'];
} else {
$key = false;
}
或使用三元运算符:
$key = $_REQUEST['key'] ? $_REQUEST['key'] : false;
如果$key
未设置或评估为false
,则$_REQUEST['key']
的设置将false
设置为$_REQUEST['key']
否则为false
。
但请注意,在PHP中有很多评估为false
的内容,包括:null
本身,0
,整数0.0
,浮动{{1} },空字符串,字符串'0'
,包含零元素的数组以及其他一些内容,因此,如果您要检查是否设置了$_REQUEST['key']
,请使用isset()
或,更好的是,array_key_exists()
代替了。
答案 2 :(得分:-3)
它不是或在PHP但是这个||尝试:
$key = $_REQUEST[ 'key' ] || $key = false;