是否有可能引用一個變量而不使用$?
例如:
if ($a != 0 && a == true) {
...
}
我不這麼認爲,但代碼(不是我寫的)不顯示錯誤,我認爲這是奇怪的。我忽略了代碼,並且它也不是一個常量。
是否有可能引用一個變量而不使用$?
例如:
if ($a != 0 && a == true) {
...
}
我不這麼認爲,但代碼(不是我寫的)不顯示錯誤,我認爲這是奇怪的。我忽略了代碼,並且它也不是一個常量。
在PHP中,可以定義一個常量,然後這個常量沒有$
,但是一個變量必須有一個。但是,這不是一個變量,並且不能代替變量。常量旨在被定義一次,並且在腳本的整個生命週期中都不會改變。
define('a', 'some value for a');
此外,您不能插在雙引號或者定界符字符串內恆定的值:
$a = "variable a"
define('a', 'constant a');
echo "A string containing $a";
// "A string containing variable a";
// Can't do it with the constant
echo "A string containing a";
// "A string containing a";
最後,PHP可發出通知,爲Use of undefined constant a - assumed 'a'
,並把它解釋爲一個錯誤未加引號字符串"a"
。看看你的錯誤日誌,看看是否發生。在這種情況下,"a" == TRUE
是有效的,因爲字符串"a"
非空,並且它與布爾值TRUE鬆散比較。
echo a == TRUE ? 'true' : 'false';
// Prints true
// PHP Notice: Use of undefined constant a - assumed 'a'
最重要的是,默認情況下,如果PHP看到一個未定義的常量,它將假定一個常量與字符串的值。用你的例子,PHP將把它解釋爲一個名爲a的常量,其值爲'a'(作爲字符串)。這確實會引起通知或其他事情:增加您的錯誤報告值以查看它。 – Narcissus
@Narcissus謝謝 - 在您輸入您的評論時已添加:) –
有了這個代碼:
if ($a != 0 && a == true) {
...
}
你沒有得到任何錯誤,因爲你(或其他人)告訴PHP不報告任何錯誤,警告或通知,與該代碼。您可以設置錯誤向更高層次發展的報告,你會得到一個通知:
注意:使用未定義的常量a - 假定在「A」 ...
這將意味着a
讀作爲值爲"a"
的常數。這不是你實際上是在尋找我猜:
if ($a != 0 && "a" == true) {
...
}
第二部分"a" == true
永遠是true
,所以實際上像這樣:
if ($a != 0) {
...
}
,因爲它不是你的代碼,一個只能假定這不是原作者的意圖。
因此:PHP中的變量始終以美元符號$
開頭。其他一切都不是一個變量。
根據定義,變量必須以$開頭。另外,它不能開始一個數字,所以像$ 1badVar變量名稱是無效的。但是,它可能以字母或下劃線開頭。
嘗試:'error_reporting(E_ALL^E_STRICT);'並且php會告訴你它找不到'$ a',而是使用文字'a'(表示字符a)進行比較。 – Yoshi
@Yoshi:寫一個答案; p –
@Tomalak Geret'kal Michael已經包含了這一點,他甚至有更好的解釋。; P – Yoshi