我希望扩展我的PHP知识,我遇到了一些东西,我不确定它是什么,甚至不知道如何搜索它。我正在查看php.net isset代码,我看到了isset($_GET['something']) ? $_GET['something'] : ''
我理解正常的isset操作,例如if(isset($_GET['something']){ If something is exists, then it is set and we will do something },但我不理解?,即再次重复get、:或'‘。有没有人能帮我分析一下,或者至少给我指出正确的方向?
发布于 2012-08-26 07:29:56
它通常被称为“速记”或Ternary Operator。
$test = isset($_GET['something']) ? $_GET['something'] : '';手段
if(isset($_GET['something'])) {
$test = $_GET['something'];
} else {
$test = '';
}要分解它,请执行以下操作:
$test = ... // assign variable
isset(...) // test
? ... // if test is true, do ... (equivalent to if)
: ... // otherwise... (equivalent to else)或者..。
// test --v
if(isset(...)) { // if test is true, do ... (equivalent to ?)
$test = // assign variable
} else { // otherwise... (equivalent to :)发布于 2016-07-25 20:11:34
在PHP7中,你可以写得更短:
$age = $_GET['age'] ?? 27;这意味着$age变量将被设置为age参数(如果它是在URL中提供的),或者它将缺省为27。
查看所有new features of PHP 7。
发布于 2012-08-26 07:21:47
这就是所谓的三元运算符,它主要用来代替if-else语句。
在您给出的示例中,它可用于从给定isset返回true的数组中检索值
isset($_GET['something']) ? $_GET['something'] : ''等同于
if (isset($_GET['something'])) {
echo "Your error message!";
} else {
$test = $_GET['something'];
}echo $test;
当然,除非您将其分配给某个对象,甚至可能为用户提交的值分配一个默认值,否则它没有多大用处。
$username = isset($_GET['username']) ? $_GET['username'] : 'anonymous'https://stackoverflow.com/questions/12126420
复制相似问题