$str = "A/B/C";
list($a[0], $a[1], $a[2]) = split('[/]', $str);
echo "$a[0], $a[1], $a[2]<br />";
foreach($a as $vv)
{
echo $vv . "<br />";
}
输出的结果如下所示:
A, B, C
C
B
A不知道为什么是这样的结果,请各位高手帮忙解答,谢谢。

解决方案 »

  1.   

    list() 从最右边一个参数开始赋值。
      

  2.   

    那为什么用echo "$a[0], $a[1], $a[2]<br />";
    分别输出每个变量时,顺序是正确的呢?谢谢
      

  3.   

    list() 从最右边一个参数开始赋值。
      

  4.   

    最右边一个参数开始赋值的意思是
    $a[2]="C";
    $a[1]="B";
    $a[0]="A";
      

  5.   

    php数组的健名不能代表顺序。数组是从$a[2]开始添加的
      

  6.   

    关键是用完list()后 数组指针指向了最后一个元素
    foreach()遍历数组的时候相当于每次next($arr)
    $str = "A/B/C";
    list($a[0], $a[1], $a[2]) = split('[/]', $str);
    echo "$a[0], $a[1], $a[2]<br />";
    next($a);
    print_r(each($a));
    next($a);
    print_r(each($a));
    foreach($a as $vv)
    {
        echo $vv . "<br />";
    }
    执行完这个你就明白了
      

  7.   

    <?php
    $str = "A/B/C"; list($a[0], $a[1], $a[2]) = split('[/]', $str); echo "$a[0], $a[1], $a[2]<br />";
    print_r($a);  //确实是先给右边的赋值 ksort ($a); //如果楼主希望按键值排序,请这样处理
    print_r($a);
    ?>
      

  8.   

    没错,再加上php的数组底层是利用hash 链表实现的
    所以$a[2]加在了链表的head位置,$a[0]是tail位置foreach 从 head -> tail 遍历。
      

  9.   

    $str = "A/B/C";
    $p = split('[/]', $str);
    foreach($p as $v)
    {
        echo $v . "<br />";
    }