如果我将一个常量设置为 = ''
,
我如何检查常量里面是否有东西?
(即查看它是否设置为空字符串以外的内容。)
defined()
不做我想做的事,因为它已经定义(as ''
)。
isset()
不适用于常量。
有什么简单的方法吗?
The manual says, that isset()
returns whether a "[...] variable is set and is not NULL".
Constants aren't variables, so you can't check them. You might try this, though:
define('FOO', 1);
if (defined('FOO') && 1 == FOO) {
// ....
}
So when your constant is defined as an empty string, you'll first have to check, if it's actually defined
and then check for its value ('' == 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更多)评估为 '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)
是一个包含所有已定义常量的数组,并且您定义的任何内容都存储在 sub-array['user']
中。
请参阅手册。