0

我有一个无法理解的问题,以下代码为什么是 print Array ( [a] => 1 [b] => 2 [c] => 3 [d] => ) ,我没有更改 $info 变量但是为什么它改变了?

<?php
function ifSetOr(&$a, $b = null) {
    return isset($a) ? $a : $b;
}

$info = array('a' => 1, 'b' => 2, 'c' => 3);
ifSetOr($info['d']);
print_r($info); //Array ( [a] => 1 [b] => 2 [c] => 3 [d] => ) 
?>
4

1 回答 1

3

$info['d']当您将它作为参考传递时,您隐式创建了它。

出于这个原因,像这样的 ifSetOr 函数永远无法工作。您不能传递不存在的变量。还要记住,“参数”isset是一个例外,因为isset它实际上不是一个函数,而是一个语言结构。

于 2013-01-22T23:19:51.677 回答