为了账号安全,请及时绑定邮箱和手机立即绑定

带有数组的php参考概念

带有数组的php参考概念

PHP
叮当猫咪 2021-10-22 10:19:18
&`` 符号如何用于 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 保持不变。


查看完整回答
反对 回复 2021-10-22
  • 2 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信