好的。我看到了这段代码,我很好奇它是如何工作的以及它做了什么。谁能给我解释一下?谢谢!
$_SESSION['langtype']
= (empty($_SESSION['langtype'])) ? 'false' : $_SESSION['langtype'];
好的。我看到了这段代码,我很好奇它是如何工作的以及它做了什么。谁能给我解释一下?谢谢!
$_SESSION['langtype']
= (empty($_SESSION['langtype'])) ? 'false' : $_SESSION['langtype'];
如果未设置值,则将其放入 false $_SESSION['langtype']
,否则将保留当前值。
另请参阅http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary
如果为空(或带有键的值不存在),它会放入"false"
($_SESSION['langtype']
作为字符串,而不是 BOOL VALUE) ,否则保持相同的值。$_SESSION['langtype']
langtype
"false"
把它作为一个字符串可能是个坏主意。例如,如果这个杰作的作者决定做一个检查if ($_SESSION['langtype']) { }
,无论如何它都会返回 true。我很好奇在哪种情况下这个解决方案应该是合理的。
if-else
它是陈述的简写。如果(empty($_SESSION['langtype']))
那么$_SESSION['langtype'] = false
否则$_SESSION['langtype'] = $_SESSION['langtype']
这是本语句中使用的三元运算符
$_SESSION['langtype'] = (empty($_SESSION['langtype'])) ?'假' : $_SESSION['langtype'];
这意味着如果名为langtype的会话变量为空则返回 false,否则使用与定义相同的 langtype
之后的部分?表示值 if 函数
空($_SESSION['langtype'])返回 true(如果它为空,则将其设置为 false 或取消定义该变量),即
$_SESSION['langtype'] = false;
和之后的部分:表示 else 语句,如果 langtype 不为空,则保持原样(等于定义的值)为
$_SESSION['langtype']=$_SESSION['langtype'];
它被称为三元运算符。它由条件表达式和两个条件评估的返回值组成。
// if expression evaluates to true first value will be returned,
// otherwise it will the second
$variable = (expression) ? 'value if true' : 'value if false';
如果它没有设置(真)那么它将是假的,否则如果它(假)它会打印会话值
$_SESSION['langtype'] = (empty($_SESSION['langtype'])) ? 'false' : $_SESSION['langtype'];
对于初学者,上面的代码与您可能知道的长版本相同
<?php
if(empty($_SESSION['langtype'])) {
$_SESSION['langtype'] = 'false';
} else {
$_SESSION['langtype'] = $_SESSION['langtype'];
}
?>