如果我将常量设置为=''
,
如何检查常量内部是否有内容
defined()
不做我想做的事情,因为它已经被定义(作为''
)isset()
不适用于常量。
有什么简单的方法吗?
手册中说,isset()
返回是否设置了"[…]变量且该变量不是NULL"。
常量不是变量,所以你不能检查它们。不过,你可以试试这个:
define('FOO', 1);
if (defined('FOO') && 1 == FOO) {
// ....
}
因此,当您的常量被定义为空字符串时,您必须首先检查它是否真的是defined
,然后检查它的值('' == MY_CONSTANT
)。
为了检查里面是否有东西,您可以使用(自PHP 5.5以来)空函数。为了避免错误,我还会检查它是否存在。
if(defined('FOO')&&!empty(FOO)) {
//we have something in here.
}
由于empty也计算大多数类似false
的表达式(如"0"、0和其他内容,请参阅http://php.net/manual/de/function.empty.php更多)作为"空"
你可以试试:
if(defined('FOO') && FOO ) {
//we have something in here.
}
这应该适用于更多的版本(可能在任何可以运行yoda条件的地方)
你可以做一个更严格的检查:
if(defined('FOO') && FOO !== '') {
//we have something in here.
}
假设您分配常量(它不是系统定义的常量),请使用以下内容:
if(array_key_exists("MY_CONSTANT", get_defined_constants(true)['user'])){
echo MY_CONSTANT; //do stuff
}
这是因为get_defined_constants(true)
的数组结果是一个数组——所有定义的常量,并且您定义的任何东西都存储在子数组['user']
中。
请参阅手册。