还有一点就是内循环(foreach ($v1 as $v2) )为什么会执行2次

解决方案 »

  1.   

    <pre>
    <?php
    $a[0][0] = "a";
    $a[0][1] = "b";
    $a[1][0] = "y";
    $a[1][1] = "z";foreach ($a as $v1) /*为何会得到2个值: $v1[0] = "a";  $v1[1] = "b"*/
    {
      print_r($v1);
        foreach ($v1 as $v2) /*把$v1的值赋给$v2时是把上面的2个值一起还是分别赋值*/
        {
            print "$v2\n";
        }
    }
    ?>
    外循环第一次
    Array
    (
        [0] => a
        [1] => b
    )
    a
    b外循环第二次
    Array
    (
        [0] => y
        [1] => z
    )
    y
    z
      

  2.   

    你要知道这是一个二维数组
    可以这么理解
    $b = array("a","b");
    $c = array("x","y");
    $a = array($b,$c);
    可以看到这时$a这时是一个包含二个元素的数组,而每个元素又是一个数组,
    那么第一次遍历的时候是这样的
    从$a中取出一个元素并赋值给$v1,相当于$v1=$b,然后进行里面的循环,
    由于$v1=$b=array("a","b");所以$v1数组进行遍历,能分别得到a,b两个值。再回到外部循环,相当于$v1 = $c = array("x","y"),这时里面的循环对数组进行遍历得到x,y两个值。foreach ($a as $v1) 
    {
        //在这里print_r($v1)相当于两次print_r($b)和print_r($c)
        foreach ($v1 as $v2)
        {
            print "$v2\n";
        }
    }
      

  3.   

    楼上的老大讲的很好...不过,个人有一个意见.如果是初学PHP且以前对写程序没有较好的了解,
    最好先从一维数组开始了解数组,不然的话,除了晕,还是晕......说真的,让新人看上面那些解释,实在是比较累,比较累