<分区>
前几天我在类里面展示了这段代码:
<?php
//Intialize the input
$score=rand(50,100);
//Determine the Grade
$grade=($score>=90)?'A':(
($score>=80)?'B':(
($score>=70)?'C':(
($score>=60)?'D':'F')));
//Output the Results
echo "<h1>A score of $score = $grade</h1>";
?>
当时我质疑嵌套三元运算符的运算顺序,认为它们会从里到外求值,即如果$score>=60就先求值,如果$score>=70就先求值,等等——无论分数如何,每次都要完成整个堆栈。
在我看来,这个构造应该遵循与数学运算符相同的优先顺序——首先解析最里面的一组括号,然后再计算,除非存在某些特定于三元运算符的运算顺序。
不幸的是,类里面的讨论很快就变成了赢得争论,而我真的只是想了解它是如何运作的。所以我的问题有两个:
(1)我会如何解释这个陈述,为什么?
和
(2) 是否有某种堆栈跟踪或单步调试工具可以让我观察这段代码的执行情况?