循环二次的话,第二次循环就不显示,但是如果注释掉第一次的话,第二次循环的内容就可以正常显示,
哪位朋友知道原因的请告诉一下,非常感谢!    $products2 = array(
     array('名称' => '苹果','数量' => 6,'单价' => 12.2),
     array('名称' => '香蕉','数量' => 2,'单价' => 15.1),
     array('名称' => '西瓜','数量' => 3,'单价' => 25.3)    
    );//循环一
    for ($i1=0;$i1<count($products2);$i1++) {
     foreach ($products2[$i1] as $myvalues) {
     echo $myvalues.'|';
     }
     echo '<br />';
    }//循环二
   // reset($products2); 就算加上重设指针,下面的循环还是显示不出来,但是如果把循环一注释掉的话,循环二就能正常显示了,哪位朋友知道原因的请告诉一下,谢谢了!
    for ($i2=0;$i2<count($products2);$i2++) {
     while (!!list($var1,$var2) = each($products2[$i2])) {
        echo $var1.'-----'.$var2.'|';
     }
     echo '<br />';
    }在线等,先谢谢各位了!

解决方案 »

  1.   

    呃- -  调试了一下,确实加上reset也不能重置内部指针
    是不是个BUG
      

  2.   

    这个可能要子数组的指针也可重置。for 没有指针的问题,foreach,可能会移动指针,具体测测吧each肯定是移动指针的。
    你可以用全部用for, foreach,each分别测下看看。
      

  3.   

    你第一轮遍历是针对$products2[$i1],而不是$products2。换句话说该reset()的是$products2[$i1],$products2的指针压根就没变动过
      

  4.   


    <?php $products2 = array(
         array('名称' => '苹果','数量' => 6,'单价' => 12.2),
         array('名称' => '香蕉','数量' => 2,'单价' => 15.1),
         array('名称' => '西瓜','数量' => 3,'单价' => 25.3)
        );//循环一
        for ($i1=0;$i1<count($products2);$i1++) {
         foreach ($products2[$i1] as $myvalues) {
         echo $myvalues.'|';
          reset($products2[$i1]);//加了这句就可以了,应该用reset($products2[$i1])而不是reset($products2)
         }
         echo '<br />';
        }//循环二
           for ($i2=0;$i2<count($products2);$i2++) {
         while (!!list($var1,$var2) = each($products2[$i2])) {
            echo $var1.'-----'.$var2.'|';
         }
         echo '<br />';
        }
    ?>