我如何在PHP中使用?

时间:2014-11-19 19:05:26

标签: php

$key = $_REQUEST[ 'key' ] or $key = false;

在PHP中,我将获得$ key的内容?如果脚本没有收到参数(密钥)怎么办?它会给出错误吗?

一般来说,我如何在PHP中使用或?

此代码来自其他人,我正在模拟它,因为如果没有收到参数,它会抛出500错误。一般来说,我使用@DaOgre建议的解决方案。但我对错误更感兴趣,以及在PHP中使用的正确方法是什么。

3 个答案:

答案 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;