在PHP语法中通常忽略空格,但有几个地方你不能在不影响意义(和结果)的情况下放置它们。
一个例子是:
$a = 5.5; // five and a half (float)
$b = 5 . 5; // "55" (string)
你知道其他任何例子吗?
问题是不是为什么这样工作,但是什么是情况,当省略或放置空格改变程序时,但两个版本在语法上都是正确的。
答案 0 :(得分:8)
那个让我疯狂的人。我提出了厄运的空白:
function foo() {
print "I'm foo.";
}
if (something()) {
foo();
}
执行时,错误是:
致命错误:在第6行调用未定义的函数foo()
一小时左右后,我发现,实际的错误信息说:
Fatal error: Call to undefined function foo() on line 6
注意双重空格:
function foo()
事实证明,通过复制/粘贴上述代码(使用highlight_string
格式化),不间断的空格
或0xA0
可接受在标识符中,函数调用是0xA0foo()
而不是foo()
。
答案 1 :(得分:4)
您不能在数字中间放置空格!天!
$x = 10 3.5; //syntax error
如果你在操作员的中间放置一个空格,那就不再是那个操作员!!
if (true & & true) echo 'true'; //syntax error
如果我在字符串中间放一个空格,那就不是同一个字符串了!
echo "Hel lo World"; //does NOT print "Hello World"!
很抱歉,但这个问题很荒谬,因为当然你不能在令牌中间抛出空格而不改变行为或破坏代码。与几乎所有其他编程和书面语言一样。
5.5
是一个数字,5 . 5
是一个字符串,因为.
是字符串连接运算符。这只是语言的语法。
答案 2 :(得分:0)
在您的示例中,您将一个词法标记分成两部分(有点像将function
分解为func tion
,确实不会以这种方式忽略空格。这并不是很有趣,当事情突破时,你可以想出很多例子,唯一有趣的任务是试图找到工作的例子(即不是语法错误),但不同的是,例如:
$a = $x++ + $y; // x is incremented
$b = $x+ + + $y; // x is not incremented