欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

三元运算问题

程序员文章站 2022-06-14 22:58:18
...
$str = true?8888:true?100+100:100000000;echo '
',$str;


为什么我这里结果输出的是200呢? 结合方向是左, 从第一三元运算符开始 为真 已经确定了 是8888 ,“:”后面的 不执行了的。难道不是这样?


回复讨论(解决方案)

$str = true?8888:(true?100+100:100000000); echo '
',$str;


这样就对了

$c=1;$d=1;$str = true?8888:(true?$c++:$d++); echo $c,"
";//1echo $d,"
";//1echo '
',$str;//8888

$str = (true?8888:true)?100+100:100000000; echo '
',$str;// 200


如果不加括号系统是这样解释的。

23$str = (true?8888:true)?100+100:100000000;  echo '
',$str;// 200


系统会这样解析? 三元运算符的 结合方向不是左吗?
相关标签: 三元运算问题