变量引用bug?

时间:2013-01-22 23:16:54

标签: php

我有一个无法理解的问题,下面的代码为什么是打印数组([a] => 1 [b] => 2 [c] => 3 [d] =>),我没有' t更改$ 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] => ) 
?>

1 个答案:

答案 0 :(得分:3)

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

因此,像这样的ifSetOr函数永远不会工作。你不能传递不存在的变量。另请注意,isset的“参数”是一个例外,因为isset实际上不是一个函数,而是一个语言结构。