给出以下表达式:
$att['menutext'] = isset($attrib_in['i_menu_text']) ? : $this->getID();
如果评估为true,$att['menutext']
会设置为true
还是$this->getID()
?
答案 0 :(得分:14)
从PHP 5.3开始,可以省略中间部分 三元运算符。表达式 expr1?:expr3 返回 expr1 if expr1 的计算结果为TRUE,否则计算为 expr3 。
答案 1 :(得分:2)
它与以下
相同 $att['menutext'] = isset($attrib_in['i_menu_text']) ? true : $this->getID();
答案 2 :(得分:2)
是的,在5.3+版本中,中间表达式是可选的,并返回true。
$a = (true ? : 1); // $a evaluates to true.
$a = (false ? : 1); // $a evaluates to 1.
答案 3 :(得分:1)
<?php var_dump(TRUE ? : 'F'); ?>
及其说:bool(true)
答案 4 :(得分:0)
这不会执行,它是 PHP&lt;的无效语法5.3 即可。
Parse error: syntax error, unexpected ':' on line X
如果要将值设置为true,则使用true:
$att['menutext'] = isset($attrib_in['i_menu_text']) ? true : $this->getID();
或者您可能更有可能:
$att['menutext'] = isset($attrib_in['i_menu_text']) ? $attrib_in['i_menu_text'] : $this->getID();