我有一个引擎,它通过从文件中获取公式、操作数和运算符来执行一些数学和逻辑运算。
所有操作都在 eval
范围内执行,最终结果保存在另一个文件中。
这些文件通常通过网络传输,因此我试图通过剥离操作前后的所有空间来最小化它们。 据我所知,这件事没有严格的规定,但是我偶然发现了这种行为:
$x = 1;
$result = $x++-++$x; // works
$result = $x+++++$x; // fails
$result = $x++ + ++$x; // works again
为什么 PHP 被“+++++”语法迷惑,却接受“++-++”?如何 “加号”比“减号”好吗?
是否有任何敏感运算符的列表 关于空间?
最佳答案
PHP 解析器在最后一个 +
符号之前搜索 ++
符号,语法 ($x++)++
使得没有意义,因为增量运算符应该应用于变量(而不是整数,这是第一个 $x++
的结果)。
运算符操作的优先级可以在这里找到:
http://php.net/manual/en/language.operators.precedence.php
$x+++++$x;
^ php parser starts here, find $x++
^ here there is a new ++, which has hight precedence to the next + char
^ here is the last +, which the php parser will find last.
当两个++
、++
用减号分开时,代码实际上是$x++ -++$x
, PHP解析器可以理解的一种。
这也是 $x+++++$x
起作用的原因。
关于php - 为什么 PHP 解析器理解 "$x++-++$x",但在 "$x+++++$x"上失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45655968/