【发布时间】:2020-08-20 15:30:34
【问题描述】:
在调试一些代码时,我注意到对 echo isset($bar) 的调用没有返回任何内容。什么都没有。根据文档,当未声明变量时,它应该返回 false,因为在我的情况下不是这样。我在沙盒里玩了一会来检查我的理智。果然,一无所获。请参阅下面的链接。
http://sandbox.onlinephpfunctions.com/code/8c6e97b4eca5177480ec069d866c0ed38c2ae47f
如果我使用var_dump(isset($bar));,我只能得到一个错误的结果,但这会产生 bool(false) 而不是零。虽然我可以处理这个问题,但有人可以解释发生了什么吗?
<?php
$foo = 1;
$defined_vars = get_defined_vars();
echo "foo isset: ".isset($foo)."\n"; //Should print 1
echo "foo isset: ".isset($bar)."\n"; //Should print 0
echo "\nvar_dump of foo and bar:\n";
var_dump(isset($foo)); //Should print bool(true)
var_dump(isset($bar)); //Should print bool(false)
echo "\n";
echo "foo array_key_exists: ".array_key_exists('foo', $defined_vars)."\n"; //Should print 1
echo "foo array_key_exists: ".array_key_exists('bar', $defined_vars); //Should print 0
输出:
foo isset: 1
Foo isset:
foo 和 bar 的 var_dump:
布尔(真)
布尔(假)
foo array_key_exists: 1
foo array_key_exists:
【问题讨论】: