PHP defined()为什么即使定义了常量也返回false?

PHP defined()为什么即使定义了常量也返回false?,php,Php,我不明白为什么这段代码不是我想要的执行方式。 打印: 123 bool(false) 因为您不是指名为TEST的常量,而是指TEST包含的任何内容 总而言之,这就是您正在做的(代码是正确的-没有123常量): 改为引用常量名称(用引号括起来): 可能是因为defined()需要字符串作为参数 var_dump( defined('TEST') ); 我们都说错了 define('TEST', 123); echo TEST; echo "\n"; var_dump( defined(TES

我不明白为什么这段代码不是我想要的执行方式。

打印:

123
bool(false)

因为您不是指名为
TEST
的常量,而是指
TEST
包含的任何内容

总而言之,这就是您正在做的(代码是正确的-没有
123
常量):

改为引用常量名称(用引号括起来):

可能是因为defined()需要字符串作为参数

var_dump( defined('TEST') );

我们都说错了

define('TEST', 123);
echo TEST;
echo "\n";
var_dump( defined(TEST) );//provide The constant name you are providing 123 so it not defined
//correct call would be
var_dump( defined('TEST') );

不完全正确。如果您尝试
defined(TEST)
,但常量未定义,您将得到
E_通知
,但它会将其转换为字符串
TEST
,因此如果未定义,则与说
defined('TEST')
@h2oooooo“bool defined(string$name)”相同如果名称给定的命名常量已定义,则返回TRUE,否则返回FALSE
define('TEST', 123);

var_dump( defined('TEST') ); // true, the TEST constant is indeed defined
//                ^    ^ Quotation marks are important!
var_dump( defined('TEST') );
define('TEST', 123);
echo TEST;
echo "\n";
var_dump( defined(TEST) );//provide The constant name you are providing 123 so it not defined
//correct call would be
var_dump( defined('TEST') );