Php 是否设置了常量,但未定义?
如果我将常量设置为=Php 是否设置了常量,但未定义?,php,constants,isset,defined,Php,Constants,Isset,Defined,如果我将常量设置为=”, 如何检查常量中是否有内容? (即查看是否将其设置为空字符串以外的其他值。) defined()不做我想做的事情,因为它已经被定义了(如')。 isset()不适用于常量 有什么简单的方法吗?说明,isset()返回“[…]变量是否已设置且不为空” 常量不是变量,所以不能检查它们。不过,您可以尝试以下方法: define('FOO', 1); if (defined('FOO') && 1 == FOO) { // .... } 因此,当您的常量被定义
”
,如何检查常量中是否有内容?
(即查看是否将其设置为空字符串以外的其他值。)
defined()
不做我想做的事情,因为它已经被定义了(如'
)。isset()
不适用于常量
有什么简单的方法吗?说明,isset()
返回“[…]变量是否已设置且不为空”
常量不是变量,所以不能检查它们。不过,您可以尝试以下方法:
define('FOO', 1);
if (defined('FOO') && 1 == FOO) {
// ....
}
因此,当您的常量被定义为空字符串时,您首先必须检查它是否真的定义了
,然后检查它的值('==MY_常量
)。要检查里面是否有东西,您可以使用空函数(从PHP 5.5开始)。为了避免错误,我还要检查它是否存在
if(defined('FOO')&&!empty(FOO)) {
//we have something in here.
}
因为empty还将大多数类似于false
的表达式(如“0”、0和其他内容,请参阅以了解更多信息)计算为“empty”
您可以尝试:
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']
中
请参阅。您可能想指出您正在谈论的语言…哦,哈哈,如果只是做这个技巧,这似乎很正常。这可以关闭。isset在变量情况下甚至没有帮助,因为仍然设置了空变量。isset只删除false,它完全不存在,或者为空。空字符串仍被视为已设置。与defined类似(文档不会说它在NULL上为false)。