是否有可能引用一个变量而不使用$?
例如:
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