18

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

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

打印:

123
bool(false)
4

3 回答 3

34

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

结束,这就是你正在做的(代码是正确的 - 没有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!
于 2013-07-29T10:47:04.820 回答
4

用错了

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') );
于 2013-07-29T10:50:25.607 回答
3

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

var_dump( defined('TEST') );
于 2013-07-29T10:49:12.660 回答