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 に答える