2011-02-03 235 views
5

空格空間在PHP語法中通常被忽略,但有幾個地方不能在不影響意義(和結果)的情況下放置它們。PHP:空白空間

一個例子是:

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

你知道的任何其他的例子嗎?

的問題是不是關於爲什麼是這種方式工作,但什麼是情況下,當省略或放置空白改變了計劃,但兩個版本的語法正確。

+0

這是一個很好的;-) – 2011-02-03 10:32:31

+0

是的,以及所有其他PHP和其他語言的書面和口頭怪癖。對不起,這個問題是什麼? – PurplePilot 2011-02-03 10:34:30

+2

第二種情況的一個很好的變體是`$ b = 5 ... 5;` - 儘管它構成了更多的情況下空間將有助於可讀性。 – mario 2011-02-03 10:39:35

回答

0

在你的例子中,你打破了兩個單一的詞法標記(有點像打破functionfunc tion,空白確實沒有被這樣忽略)。這並不是很有意思,當事情突破時你可以想出很多例子,唯一有趣的任務是嘗試找到一個例子,其中工作(即不是語法錯誤),但不同,例如:

$a = $x++ + $y; // x is incremented 
$b = $x+ + + $y; // x is not incremented 
8

那個人讓我狂暴。我提出末日的空白:

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

if (something()) { 
    foo(); 
} 

執行時,將錯誤是:

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

一個小時左右後,我發現,該錯誤消息實際上說:

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

注意雙空格:

function foo()

原來,由拷貝/粘貼上面的代碼(與highlight_string格式化的),一個非間斷空間 ,或0xA0是在標識符可接受,所以該函數調用是0xA0foo()代替foo()

2

您不能在空格的數字中間!天哪!

$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是一個字符串,因爲.是字符串連接運算符。這只是語言的語法。