是否可以在不使用$的情况下引用变量?
例如:
if ($a != 0 && a == true) {
...
}
我不这么认为,但代码(不是我写的)没有显示错误,我认为这很奇怪。我忽略了代码,也不是常量。
答案 0 :(得分:9)
在PHP中,可以定义一个常量,该常量不会有$
,但变量必须有一个。但是,这不是变量,也不是变量的替代品。常量只需定义一次,并且不会在脚本的整个生命周期内更改。
define('a', 'some value for a');
此外,您不能在双引号或HEREDOC字符串中插入常量的值:
$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'
答案 1 :(得分:2)
使用此代码:
if ($a != 0 && a == true) {
...
}
您没有收到任何错误,因为您(或其他人)告诉PHP不报告任何包含该代码的错误,警告或通知。您将错误报告设置为更高级别,您将收到通知:
注意:使用未定义的常数a - 在...中假定为“a”
这意味着a
被视为常量,其值为"a"
。这不是你真正想要的东西我想:
if ($a != 0 && "a" == true) {
...
}
第二部分"a" == true
始终为true
,所以实际上就是这样:
if ($a != 0) {
...
}
因为它不是你的代码,所以只能假设这不是原作者想要的。
所以:PHP中的变量总是以美元符号$
开头。其他一切都不是变数。
答案 2 :(得分:1)
根据定义,变量必须以$开头。此外,不能以数字开头,因此像$ 1badVar这样的变量名称无效。但是,它可以以字母或下划线开头。