<?php    
    $arr = ['a', 'b', 'c', 'd'];
    //引用下标 2
    $v = & $arr[2];
    echo "<pre>";
    // 引用变量$v  与 foreach中的赋值变量$v相同
    foreach ($arr as $v)
    {
        echo '当前$v=' . $v . "\n";
        print_r($arr);
        echo "\n";
    }

凭直觉想一下,$v 会输出什么?abcd? 是不是不会这么简单?

输出结果

    当前$v=a    
    Array
    (
        [0] => a
        [1] => b
        [2] => a //注意此处,此时由于$v与$arr[2]为引用关系,当$v值发生变化后,$arr[2]同样发生变化
        [3] => d
    )
    当前$v=b
    Array
    (
        [0] => a
        [1] => b
        [2] => b //同理
        [3] => d
    )
    当前$v=b
    Array
    (
        [0] => a
        [1] => b
        [2] => b //同理
        [3] => d
    )
    当前$v=d
    Array
    (
        [0] => a
        [1] => b
        [2] => d //同理
        [3] => d
    )

引用时,多个变量共享一个内存地址,任意变量名值的变更,都会影响拥有同样引用关系的变量。