PHP Pass By Reference逻辑解释

时间:2014-03-31 14:20:53

标签: php arrays pass-by-reference

任何人都可以向我解释以下PHP脚本的输出:

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

        foreach ($a as &$v) {
        }

        foreach ($a as $v) {
        }            

        print_r($a);

输出:

  

阵   (       [0] =>零       [1] =>一       [2] =>一   )

2 个答案:

答案 0 :(得分: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
// )

答案 1 :(得分:1)

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

<?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
// )