3 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
檢查一個(gè)常量是否由她的名字定義:
defined('CONSTANT');
檢查是否有任何值是字符串:
is_string(CONSTANT);
從邏輯上講,如果它不是常量,那么它只是一個(gè)字符串。
要檢查是否是常量,您必須在字符串中傳遞常量名稱。您還可以使用 檢查是否存在具有相同值的常量get_defined_constants(),但您不會(huì)知道是否是相同的常量。
define('MYCONST', "THE VALUE");
function exists_a_constant($value)
{
$constants = get_defined_constants(true);
return in_array($value, $constants['user']); // true if finds or false if not
// return array_search($value, $constants['user']); //Will return the key (name of the constant)
}
function checkVars($var)
{
if (exists_a_constant($var)) {
echo "exists a constant";
} else {
echo "not";
}
}
checkVars(MYCONST);
// exists a constant
checkVars('MYCONST');
// not
checkVars("THE VALUE");
// exists a constant
checkVars("random string");
// not

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
您將使用defined()
來測(cè)試該常量是否存在并已定義。然后使用is_string()
withconstant()
來判斷常量是否是字符串。我假設(shè)您正在使用,return
因?yàn)榇藯l件是函數(shù)的一部分:
if(defined($constantName) and is_string(constant($constantName))) {
? ? return constant($constantName);
} else {
? ? // other code
}
運(yùn)行以下測(cè)試我可以看到返回了“bar”:
define("FOO", "bar");
$constantName = "FOO";
if(defined($constantName) and is_string(constant($constantName))) {
? ? echo constant($constantName); // 'bar'
} else {
? ? // other code
}

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
我做了一些更改并且有效。
get_define_constants 獲取一個(gè)包含所有已定義常量的數(shù)組,然后我使用 array_key_exists 來檢查您傳遞的常量是否在數(shù)組中。
define('FOO','bar');
function exists_a_constant($value){
? ? $constants = get_defined_constants();
? ? return array_key_exists($value,$constants);?
}
if(exists_a_constant('FOO')){
? ? echo 'defined';
}else{
? ? echo 'not defined';
}
- 3 回答
- 0 關(guān)注
- 201 瀏覽
添加回答
舉報(bào)