有谁可以告诉我为什么字符串定义的变量不存在?
$string = 'variable';
${$string} = NULL;
echo $variable;
未定义变量$变量。
答案 0 :(得分:2)
isset - 确定变量是否已设置且不是 NULL
因为您将变量设置为NULL,如
$string = 'variable';
${$string} = NULL;
它将返回 false
答案 1 :(得分:0)
正如其他人所指出的,isset()
检查变量是否已设置且不是null
。
如果要检查变量是否已定义,包括设置为null
的变量,可以使用get_defined_vars()获取列表定义的变量并检查变量名是否存在:
$string = null;
$string2 = '';
var_dump(array_key_exists('string', get_defined_vars())); // bool(true)
var_dump(array_key_exists('string2', get_defined_vars())); // bool(true)
var_dump(array_key_exists('string3', get_defined_vars())); // bool(false)
答案 2 :(得分:-1)
PHP中的未定义变量的值为NULL,因此:
${$string} == $variable;
${$string2} == $variable2;
${$string2} == $variable2 == 'value'; // so isset returns TRUE
$variable == NULL; // so isset returns FALSE
${$string} == $variable == NULL; // so isset returns FALSE