PHP:重要的空格

时间:2011-02-03 10:29:38

标签: php syntax whitespace

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

一个例子是:

$a = 5.5;    // five and a half (float)
$b = 5 . 5;  // "55" (string)

你知道其他任何例子吗?

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

3 个答案:

答案 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