2013-04-04 80 views
3

請參閱下面的代碼,這是完美的PHP工作。任何人都可以解釋我的代碼如何工作。因爲在下面的代碼中我聲明瞭$caregory_idwithout semicolon並沒有任何減速值。然後,這段代碼也能正常工作,沒有任何錯誤,並且var_dump($category_id)給我返回一個null的值。請解釋此代碼如何在PHP中工作?

php如何執行此代碼而不使用分號?

<?php 
    $category_id= //No semicolon 
    var_dump($category_id); //returns NULL 
?> 
+1

換行符不是語句結束符。你有什麼相當於'$ foo = bar($ foo);'。 – DCoder 2013-04-04 07:56:35

+0

代碼中的category_id究竟是什麼? – 2013-04-04 07:56:46

回答

13

它的工作原理,因爲PHP對待你這樣的代碼:

$category_id = var_dump($category_id); 

var_dump()返回值被分配給$category_id。 PHP中未定義的變量隱式設置爲null,這是您在var_dump()的輸出中看到的內容。但是,您還會收到有關未定義的$category_id的通知;如果你沒有看到它,你應該在你的腳本中使用此代碼:

error_reporting(-1); 
ini_set('display_errors', 'On'); 

發展過程中還建議這些設置,他們可以抓住,否則將被忽視生產機器上的問題。

+0

是的,當你通過解析器運行這段代碼時,它會發出通知:'注意:未定義的變量:category_id在/var/www/yourscript.php:eval()'代碼在第二行' – Oldskool 2013-04-04 07:57:35

+0

感謝您的詳細描述。我明白髮生了什麼事。 – 2013-04-04 08:04:51

+0

@傑克+1說明。 – 2013-04-04 08:06:30