我无法掌握下面列出的代码中的评估逻辑。有谁知道为什么PHP在这种情况下评估$b
和$b = $b
的方式不同吗?
我已阅读了SO的一些问题,并检查了PHP manual。这样做我已经了解“PHP不(在一般情况下)指定表达式评估的顺序为”和“,该行为可以在PHP版本之间或根据周围代码进行更改” 。我不觉得这适用于这种情况。还是呢?
作为第一个承认这可能不是你的日常编码问题,我仍然好奇。偶然想到做一些code golfing。
$a = [[00, 01, 02, 03],
[10, 11, 12, 13],
[20, 21, 22, 23],
[30, 31, 32, 33]];
$b = 2;
echo $a[$b][$b++], PHP_EOL;
$b = 2;
echo $a[$b=$b][$b++], PHP_EOL;
输出 - PHP 5.5.14:
32
22
什么PHP说的是,它不能保证像操作的数学秩序秩序。它可能在每个当前版本和系统中具有相同的顺序,并且工作方式完全相同。他们表示,在更高版本中进行更改可能会改变结果,并且不能保证其始终如一。 – 2015-04-01 20:04:34