empty($var)
运行此代码后,$ var [' key']尽管从未明确设置,但最终仍然存在。这意味着true
将不再返回$foo = &$bar['key'];
$echo array_key_exists('key', $bar)? "true" : "false";
,这会让我感到困扰。
这种行为是否有意?我无法找到相关文档。
<小时/> 一个更简单的代码,可以得到相同的结果:
php composer dump-autoload
答案 0 :(得分:0)
要通过引用传递,必须有一个传递引用。要获得传递的引用,必须创建该变量。因此,可以预期在上面的代码中创建变量。
这类似于内置exec( $cmd, $out)
的情况,即使$ cmd不产生输出,也会存在$ out。
在您的代码中,您可以尝试empty($var['key']
。
答案 1 :(得分:0)
由于您需要将变量传递给函数,因此必须首先创建引用。在其他语言中,您会收到错误,因为密钥不存在,因此无法传递给函数。但是,在PHP中,创建变量和使用变量之间没有区别。因此,您正在创建密钥然后传递它,但PHP语法会将其隐藏起来。
当由PHP解释执行时,实际发生这种情况:
$var['key'] = null;
value($var['key']);
解释器确实是一种奇怪的行为。如果变量是按值传递的,那么它将生成运行时错误,因为它不会被隐式创建。