【问题标题】:issue with array reference in phpphp中的数组引用问题
【发布时间】:2011-11-15 18:54:17
【问题描述】:

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

$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" } 

上面的代码有什么问题?

【问题讨论】:

    标签: php arrays reference pass-by-reference


    【解决方案1】:

    我认为您正在寻找的是函数 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"
    }
    

    【讨论】:

    • 我不知道在 php 中通过引用返回。谢谢。来自非php背景,这对我来说真的很不同。我担心,我不会引入一些无意的错误。 :(
    猜你喜欢
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多