PHP 5.4 - 由字符串定义的变量,它的值设置为NULL未定义

时间:2015-05-17 10:08:47

标签: php php-5.4

有谁可以告诉我为什么字符串定义的变量不存在?

$string = 'variable';
${$string} = NULL;

echo $variable;
  

未定义变量$变量。

3 个答案:

答案 0 :(得分:2)

根据documentation

  

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