2011-06-08 117 views
3

對於下面的代碼:PHP未定義的變量

line 10: echo "before require: ".$test; 
line 11: require(dirname(__FILE__) . 'load.php'); 
line 12: echo "after require: ".$test; 

輸出:

before require: 
Notice: Undefined variable: test in /home/test.php on line 12 
after require: 

如果load.php很簡單,也不會有消息:「通知:未定義的變量... 「。爲什麼和「load.php」會如何影響$ test變量?

+1

請顯示您的'load.php'源代碼。 – pltvs 2011-06-08 07:19:29

回答

3

如果$test變量是unset裏面load.php文件。

這將影響您的$test變量,您將顯示Notice: Undefined variable

因爲在include語句之前聲明的變量將在包含文件中可用,所以對包含文件中的變量執行的任何操作都將影響該變量。

0

您的變量未設置,因此是通知消息。

如果您將值設置爲load.php中的變量$test,它將具有該值。

如果你不這樣做,那麼......它會保持不確定的情況下,不是一個好的做法。

0

documentation

當包括一個文件,它包含的代碼繼承在其上包括髮生該行的variable scope。從調用文件的那一行可用的任何變量將在被調用的文件中可用,從這一點開始。但是,包含文件中定義的所有函數和類都具有全局範圍。

0

是不是應該是require(dirname(__FILE__) . '/load.php');? :)

不管怎麼說,它看起來像你要麼unset()變量load.php或修改display_errors和/或error_reporting更高水平load.php

0

如果已經配置PHP來顯示所有通知,警告和錯誤 ,你會看到一個通知,當您運行此腳本:在/path/to/testtype.php上測試:注意: 未定義的變量當您使用php-development.inirather 而不是php-production.ini時,默認情況下,第3行的Notices 處於打開狀態,並且在調試 腳本時可能會非常有用。