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

php
2022-08-30 20:50:44

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

define('TEST', 123);
echo TEST;
echo "\n";
var_dump( defined(TEST) );

打印:

123
bool(false)

答案 1

因为你不是指命名的常量 - 你指的是任何包含的东西。TESTTEST

包装出来,这就是你正在做的事情(代码是正确的 - 没有常量):123

define('TEST', 123);

var_dump( defined(TEST) ); // turns into the below statement
var_dump( defined(123) ); // false - no 123 constant

请改为引用常量名称(将其括在引号中):

define('TEST', 123);

var_dump( defined('TEST') ); // true, the TEST constant is indeed defined
//                ^    ^ Quotation marks are important!

答案 2

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

var_dump( defined('TEST') );

推荐