0

好的。我看到了这段代码,我很好奇它是如何工作的以及它做了什么。谁能给我解释一下?谢谢!

$_SESSION['langtype']
   = (empty($_SESSION['langtype'])) ? 'false' : $_SESSION['langtype'];
4

7 回答 7

3

如果未设置值,则将其放入 false $_SESSION['langtype'],否则将保留当前值。

另请参阅http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

于 2012-10-17T12:54:49.447 回答
1

如果为空(或带有键的值不存在),它会放入"false"$_SESSION['langtype']作为字符串,而不是 BOOL VALUE) ,否则保持相同的值。$_SESSION['langtype']langtype

"false"把它作为一个字符串可能是个坏主意。例如,如果这个杰作的作者决定做一个检查if ($_SESSION['langtype']) { },无论如何它都会返回 true。我很好奇在哪种情况下这个解决方案应该是合理的。

于 2012-10-17T12:55:54.097 回答
1

if-else它是陈述的简写。如果(empty($_SESSION['langtype']))那么$_SESSION['langtype'] = false否则$_SESSION['langtype'] = $_SESSION['langtype']

于 2012-10-17T12:56:36.967 回答
1

这是本语句中使用的三元运算符

$_SESSION['langtype'] = (empty($_SESSION['langtype'])) ?'假' : $_SESSION['langtype'];

这意味着如果名为langtype的会话变量为空则返回 false,否则使用与定义相同的 langtype

之后的部分表示值 if 函数

空($_SESSION['langtype'])
返回 true(如果它为空,则将其设置为 false 或取消定义该变量),即
$_SESSION['langtype'] = false;

和之后的部分表示 else 语句,如果 langtype 不为空,则保持原样(等于定义的值)为

$_SESSION['langtype']=$_SESSION['langtype'];

于 2012-10-17T12:57:45.703 回答
1

它被称为三元运算符。它由条件表达式和两个条件评估的返回值组成。

// if expression evaluates to true first value will be returned,
// otherwise it will the second 
$variable = (expression) ? 'value if true' : 'value if false';
于 2012-10-17T12:58:40.100 回答
0

如果它没有设置(真)那么它将是假的,否则如果它(假)它会打印会话值

于 2012-10-17T12:57:51.073 回答
0
$_SESSION['langtype'] = (empty($_SESSION['langtype'])) ? 'false' : $_SESSION['langtype'];

对于初学者,上面的代码与您可能知道的长版本相同

<?php
     if(empty($_SESSION['langtype'])) {
           $_SESSION['langtype'] = 'false';
     } else {
          $_SESSION['langtype'] =  $_SESSION['langtype'];
     }
 ?>
于 2012-10-17T12:59:39.247 回答