<?php
    $testarr = array('a','b','c');
     
    foreach( $testarr as $k=>&$v ) {
        echo $k.'->'.$v."<br>";
    }
    echo "-------<br>";
   // echo $k;//2
   // echo $v;//c
    //echo $testarr[2];
    foreach( $testarr as $k=>$v ) {
     print_r($v);
        echo $k.'->'.$v."<br>";
    }输出结果是0->a
1->b
2->c
-------
0->a
1->b
2->b
为什么不是0->a
1->b
2->c
-------
0->a
1->b
2->c 求解.....

解决方案 »

  1.   

    你第一次使用了地址操作符:     foreach( $testarr as $k=>&$v ) 注意其中的‘ & ’;可能这样改变了数组最后元素的值。。
      

  2.   

    第一个循环中你用的是引用变量,在循环下边unset($v)就ok了 这应该是属于php的一个缺陷吧 $v变成了全局变量。第二个循环print_r($testarr);就能看到$testarr[2]在不断的改变
      

  3.   

    第一次循环使用了取地址操作符        foreach( $testarr as $k=>&$v ) 可能这样改变了数组最后元素的值
      

  4.   

    foreach( $testarr as $k=>&$v ) 
    用了&$v ,改变了数组的值