PHP:重要的空格

mat*_*sza 5 php syntax whitespace

在PHP语法中通常会忽略空格,但有几个地方你不能在不影响意义(和结果)的情况下放置空格.

一个例子是:

$a = 5.5;    // five and a half (float)
$b = 5 . 5;  // "55" (string)
Run Code Online (Sandbox Code Playgroud)

你知道其他任何例子吗?

问题不在于为什么这样工作,但是什么是情况,当省略或放置空格改变程序时,但两个版本在语法上都是正确的.

Lin*_*een 8

那个让我疯狂的人.我提出了厄运的空白:

function foo() {
   print "I'm foo.";
}

if (something()) {
    foo();
}
Run Code Online (Sandbox Code Playgroud)

执行时,错误是:

致命错误:在第6行调用未定义的函数foo()

一个小时后,我发现,错误信息实际上说:

Fatal error: Call to undefined function  foo() on line 6

注意双空格:

function  foo()

事实证明,通过复制/粘贴上面的代码(格式化highlight_string),一个不间断的空格 ,或者在标识符中0xA0可接受的,所以函数调用是0xA0foo()代替foo().


Mor*_*gil 0

在您的示例中,您将单个词汇标记分成两部分(有点像闯入functionfunc tion空格确实不会以这种方式被忽略)。这并不是很有趣,当事情发生这种情况时,你可以想出很多例子,唯一有趣的任务是尝试找到一个有效的例子(即不是语法错误),但不同,例如:

$a = $x++ + $y;   // x is incremented
$b = $x+ + + $y;  // x is not incremented
Run Code Online (Sandbox Code Playgroud)