3 回答

TA貢獻1877條經驗 獲得超6個贊
檢查一個常量是否由她的名字定義:
defined('CONSTANT');
檢查是否有任何值是字符串:
is_string(CONSTANT);
從邏輯上講,如果它不是常量,那么它只是一個字符串。
要檢查是否是常量,您必須在字符串中傳遞常量名稱。您還可以使用 檢查是否存在具有相同值的常量get_defined_constants(),但您不會知道是否是相同的常量。
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貢獻1827條經驗 獲得超8個贊
您將使用defined()
來測試該常量是否存在并已定義。然后使用is_string()
withconstant()
來判斷常量是否是字符串。我假設您正在使用,return
因為此條件是函數的一部分:
if(defined($constantName) and is_string(constant($constantName))) {
? ? return constant($constantName);
} else {
? ? // other code
}
運行以下測試我可以看到返回了“bar”:
define("FOO", "bar");
$constantName = "FOO";
if(defined($constantName) and is_string(constant($constantName))) {
? ? echo constant($constantName); // 'bar'
} else {
? ? // other code
}

TA貢獻1775條經驗 獲得超11個贊
我做了一些更改并且有效。
get_define_constants 獲取一個包含所有已定義常量的數組,然后我使用 array_key_exists 來檢查您傳遞的常量是否在數組中。
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 關注
- 185 瀏覽
添加回答
舉報