PHP传递引用逻辑解释

PHP传递引用逻辑解释,php,arrays,pass-by-reference,Php,Arrays,Pass By Reference,有人能给我解释一下以下PHP脚本的输出吗: $a = array ('zero','one','two'); foreach ($a as &$v) { } foreach ($a as $v) { } print_r($a); 输出: 排列 [0]=>0 [1] =>一个 [2] =>一个 这不是一个真正的答案,但它可能会帮助你了解发生了什么 <?ph

有人能给我解释一下以下PHP脚本的输出吗:

        $a = array ('zero','one','two');

        foreach ($a as &$v) {
        }

        foreach ($a as $v) {
        }            

        print_r($a);
输出:

排列 [0]=>0 [1] =>一个 [2] =>一个


这不是一个真正的答案,但它可能会帮助你了解发生了什么

<?php

$a = array ('zero','one','two');

foreach ($a as &$v) {
}

print_r($v); // two

$v = "four";

print_r($a);
// Array
// (
//     [0] => zero
//     [1] => one
//     [2] => four
// )

通过引用传递,可以在循环内部或外部更改值

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

        // before loop $v is reference to last item in array $a
        // if you perform unset($v) before this loop, nothing will change in $a
        foreach ($a as $v) {
            // here you assigning $v values from this array in loop 
        }            

        print_r($a);
// Array
// (
//     [0] => zero
//     [1] => one
//     [2] => one
// )

当$v引用数组$a中的最后一项时,即它等于2,那么为什么seond循环后最后一项变为1?希望您现在删除的问题上的一系列否决票具有指导意义。散漫的问题被认为是离题的,如果你对上面的人很尖锐,你会得到更多的反对票。请在这个社区里保持文明!