我不明白该输出(“ four
”)是怎么来的?
$a = 2;
echo
$a == 1 ? 'one' :
$a == 2 ? 'two' :
$a == 3 ? 'three' :
$a == 5 ? 'four' :
'other'
;
// prints 'four'
我不明白为什么four
打印“ ”。
您需要将三元条件括起来:
<?php
for ($a=0; $a < 7; $a++) {
echo (
$a == 1 ? 'one' :
($a == 2 ? 'two' :
($a == 3 ? 'three' :
($a == 5 ? 'four' : 'other'))));
echo "\n";
// prints 'four'
}
exit;
?>
返回:
other
one
two
three
other
four
other
如您所愿。
请参阅PHP三元运算符帮助的“三元运算符”底部的注释。
表达式从左到右进行求值。因此,您实际上得到了:
echo (
((($a == 1 ? 'one' : $a == 2)
? 'two' : $a == 3) ? 'three' :
$a == 5) ? 'four' : 'other');
因此$a=2
,您得到:
echo (
((($a==2) ? 'two' : $a == 3) ? 'three' :
$a == 5) ? 'four' : 'other');
然后
echo (
((true ? 'two' : $a == 3) ? 'three' :
$a == 5) ? 'four' : 'other');
然后
echo (
('two' ? 'three' : $a == 5) ? 'four' : 'other');
然后
echo (
'three' ? 'four' : 'other');
等等echo 'four'
。
请记住,PHP是动态类型的,并将任何非零,非空值都视为TRUE。
问题内容: 我想将以下内容转换为运算符。 我写得像下面。 但是发现它不能正常工作,这不是正确的方法吗? 问题答案: 在PHP中,三元运算符是棘手的事情,因为它们是左关联的(不同于所有其他语言都是右关联的)。在这种情况下,您将需要使用括号告诉PHP您到底想要什么:
问题内容: 我一直在尝试使用嵌套形式,如下所示: 但似乎我缺少了一些东西。谁能协助我该怎么做? 问题答案: 将其括在括号中: 甚至更好的是,使用适当的/ 语句(出于可维护性): 但是,正如其他人指出的那样:使用起来更简单:
问题内容: 有人可以解释PHP中的三元运算符速记()和空合并运算符()之间的区别吗? 它们什么时候表现不同,什么时候以相同的方式表现(如果甚至发生)? VS。 问题答案: 当您的第一个参数为null时,它们基本相同,不同之处在于,当您有未定义的变量时,null合并不会输出。在PHP7.0迁移的文档有这样一段话: 对于需要将三元数与isset()结合使用的常见情况,已将空合并运算符(??)添加为语法
模板可以支持三元运算符,如: {$status?'发布':'下线'} {$vo.status?'发布':'下线'} {$vo['status']?'发布':'下线'} 支持条件判断表达式: {$a==$b ? 'yes' : 'no'} 条件运算符可以是==、===、!=、!==、>=、<=
请参考:http://www.kancloud.cn/manual/thinkphp/1802
模板可以支持三元运算符,如: {$status?'发布':'下线'} {$vo.status?'发布':'下线'} {$vo['status']?'发布':'下线'} 支持条件判断表达式: {$a==$b ? 'yes' : 'no'} 条件运算符可以是==、===、!=、!==、>=、<=