&`` 符号如何用于 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); ?>执行上述代码后输出如下:cfgArray ( [check] => ) 请解释以下陈述 $ptr = &$cfg;/*what happens here*/ $ptr =& $ptr[$name];
2 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
在这里,&意味着数组是通过引用分配的。这意味着不是从$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 保持不变。
- 2 回答
- 0 关注
- 108 浏览
添加回答
举报
0/150
提交
取消