php中的数组引用问题

时间:2011-11-15 18:54:17

标签: php arrays reference pass-by-reference

我正在尝试运行以下代码:

$a = array('aa');

function my_func (& $m) {
    return $m;
}

$c = & my_func($a);
$c[] = 'bb';
var_dump($a);
echo '--------';
var_dump($c);

我的期望是$ a和$ c会有相同的参考。但结果却不同。

我得到的结果是:

array(1) { [0]=> string(2) "aa" } --------array(2) { [0]=> string(2) "aa" [1]=> string(2) "bb" } 

上面的代码有什么问题?

1 个答案:

答案 0 :(得分:4)

我认为您要找的是函数returning by reference(在您的示例中与passing by reference结合使用)。

以下是一个例子:

function &my_func(&$m) {
    return $m;
}

$a = array('aa');
$c = &my_func($a);
$c[] = 'bb';

var_dump($a);
echo "---\n";
var_dump($c);

输出:

array(2) {
  [0]=>
  string(2) "aa"
  [1]=>
  string(2) "bb"
}
---
array(2) {
  [0]=>
  string(2) "aa"
  [1]=>
  string(2) "bb"
}