通过引用分配php

这个问题在这里已经有了答案:

  • PHP'foreach'如何实际工作? 7个答案

  • 没有深入研究技术细节,这里的基本思想是你已经使$ref成为$row的引用。 具体来说, $row某个内存地址。 如果你做了一个简单的任务

    $ref = $row;
    

    然后$ref$row副本 。 如果你改变一个,它不会改变另一个

    $row = &$ref;
    

    $ref现在指向$row 。 所以他们本质上是同一个变量。 他们指向相同的记忆位置(过于简化,所以你明白了)。

    最常见的用法是你需要在函数中注入一些值。

    $data = ['1', '2', '3'];
    
    function modVal(Array &$arr) {
        $arr[2] = '9';
    }
    modVal($data);
    var_dump($data);
    

    产生

    array(3) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
      [2]=>
      string(1) "9"
    }
    

    然而,从函数声明中移除& ,输出就变成了

    array(3) {
      [0]=>
      string(1) "1"
      [1]=>
      string(1) "2"
      [2]=>
      string(1) "3"
    }
    

    PHP有时会自动通过引用传递给你。 例如,如果您实例化一个类并将该实例注入到函数中,它将自动通过引用传递。


    当你做$row = &$ref;

    这意味着:与其他名称相同的变量内容。 也就是说,相同,不是副本。 你在$ref做什么,它将以$row ......反之亦然。

    链接地址: http://www.djcxy.com/p/53027.html

    上一篇: Passing by reference assignment php

    下一篇: Increasing array elements while in foreach loop in php?