gpt4 book ai didi

php - 可能意外发生的引用和数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:38:28 26 4
gpt4 key购买 nike

有人可以解释一下这里的引用吗?我知道引用导致它发生但如何发生?为什么只在 2 的索引中?为什么不是其他的?

我知道引用的作用,但在这个特定示例中我迷路了:

$a = array ('zero','one','two');
foreach ($a as &$v) {
}
foreach ($a as $v) {
}
print_r ($a);

输出:

Array ( [0] => zero [1] => one [2] => one )

最佳答案

在第一个 foreach 循环之后,$v 将是对 $a 中最后一个元素的引用。

在下面的循环中,$v 将被分配给 zero,然后是 one,最后是它自己(它是一个引用)。由于之前的赋值,它的当前值现在是 one。这就是为什么最后有两个 one 的原因。

为了更好地理解:您的代码与以下几行相同:

// first loop
$v = &$a[0];
$v = &$a[1];
$v = &$a[2]; // now points to the last element in $a

// second loop ($v is a reference. The last element changes on every step of loop!)
$v = $a[0]; // since $v is a reference the last element has now the value of the first -> zero
$v = $a[1]; // since $v is a reference the last element has now the value of the second last -> one
$v = $a[2]; // this just assigns one = one

关于php - 可能意外发生的引用和数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com