带有数组的php参考概念

&`` 符号如何用于 PHP 中的数组?


当我执行以下代码时


<?php

    $cfg=array();

    $curpath=array();

    $name="check";

    array_push($curpath, strtolower($name));

    $ptr =& $cfg;

    /*what happens here*/

    $ptr =& $ptr[$name];


    print("\ncfg\n");

    print_r($cfg);

 ?>

执行上述代码后输出如下:


cfg

Array ( [check] => )  

请解释以下陈述


 $ptr = &$cfg;

/*what happens here*/

 $ptr =& $ptr[$name];


叮当猫咪
浏览 109回答 2
2回答

慕运维8079593

在这里,&意味着数组是通过引用分配的。这意味着不是从$cfgto复制值$ptr,这两个实际上是指完全相同的数组。如果使用 修改数组$ptr,则在使用 访问数组时会看到这些更改$cfg。同样,如果您使用 修改数组$cfg,您将在使用 访问它时看到更改$ptr。如果没有&in $ptr = &$cfg;, 的值$cfg将被复制到$ptr。在这种情况下,您将拥有两个完全不同的数组。然后,更改$ptr不会反映在$cfg,反之亦然。例如,如果我们有:$cfg = ["item 1" => 1, "item 2" => 2];$ptr = &$cfg;$ptr["item 1"] = 999;echo $cfg["item 1"];echo $ptr["item 1"];输出将是:999 999但是如果您更改$ptr = &$cfg为$ptr = $cfg,则输出将是:1 999在第二种情况下,原始的 $cfg 保持不变。
打开App,查看更多内容
随时随地看视频慕课网APP