首页 > 解决方案 > PHP:数组引用其他数组(无意)

问题描述

问题是执行下面的代码时会打印什么?

我的回答是:

arr[0]=1 and arr2[0]=2

但显然,没有。从执行过程中可以看出,答案似乎是 arr[0]=2 和 arr2[0]=2。现在,这让我感到困惑 - 如果它甚至没有被引用,为什么会arr[0]是 2,因此在修改时不应该改变arr2[0]

$a = 1;
$arr = array(1);
$a = &$arr[0]; //$a=1
$arr2 = $arr;
$arr2[0]++; //$arr2[0]=2
echo "arr[0]=".$arr[0]. "<br>";
echo "arr2[0]=".$arr2[0]. "<br>";

我可能遗漏了一些令人尴尬的明显东西,但似乎无法弄清楚。提前致谢!

标签: phparrays

解决方案


<?php
$a = 1;
$arr = array(1);
$a = $arr[0]; //$a=1
$arr2 = $arr;
$arr2[0]++; //$arr2[0]=2
echo "arr[0]=".$arr[0]. "<br>";
echo "arr2[0]=".$arr2[0]. "<br>";

删除 & $a = &$arr[0];,你会得到你的预期结果

在 php 中阅读更多关于 & 符号的信息!!!


推荐阅读