在介绍list时候,给出了如下warning:list() assigns the values starting with the right-most parameter. If you are using plain variables, you don't have to worry about this. But if you are using arrays with indices you usually expect the order of the indices in the array the same you wrote in the list() from left to right; which it isn't. It's assigned in the reverse order. 
我自己翻译不太明白,list有下标吗?list为什么从右到左赋值?什么情况是他所说的list下标和数组下标相反? 
我是新手,希望哪位高手予以解答,不胜感激!!!!

解决方案 »

  1.   

    手册下面还有例子呢
    $info = array('coffee', 'brown', 'caffeine');
    list($a[0], $a[1], $a[2]) = $info;
    var_dump($a);输出
    array(3) {
      [2]=>
      string(8) "caffeine"
      [1]=>
      string(5) "brown"
      [0]=>
      string(6) "coffee"
    }
    看出问题了没、?如果没,这样子运行$info = array('coffee', 'brown', 'caffeine');
    list($a[], $a[], $a[]) = $info;
    var_dump($a);
      

  2.   

    示例1list($a, $b, $c) = array(1, 2, 3);
    print_r(array($a, $b, $c));
    Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
    )示例2list($p[], $p[], $p[]) = array(1, 2, 3);
    print_r($p);
    Array
    (
        [0] => 3
        [1] => 2
        [2] => 1
    )
      

  3.   

    你说的有中文注释吧!http://php.net/manual/zh/function.list.php
    Warning
    list() 从最右边一个参数开始赋值。如果你用单纯的变量,不用担心这一点。但是如果你用了具有索引的数组,通常你期望得到的结果和在 list() 中写的一样是从左到右的,但实际上不是。是以相反顺序赋值的。
    list有下标吗? 这个我不明白你的意思
    list为什么从右到左赋值? 这是PHP的做法,我觉得不用去关心顺序
    什么情况是他所说的list下标和数组下标相反? 下标是一致的。只是赋值顺序不一样。下面就有一段实例。
    <?php
    $info = array('coffee', 'brown', 'caffeine');
    list($a[0], $a[1], $a[2]) = $info;
    var_dump($a);
    ?>
    产生如下输出(注意单元顺序和 list() 语法中所写的顺序的比较):
    array(3) {
      [2]=>
      string(8) "caffeine"
      [1]=>
      string(5) "brown"
      [0]=>
      string(6) "coffee"
    }
    其实这不影响结果,区别是原本正常的赋值顺序应该这样
    array(3) {
      [0]=>
      string(6) "coffee"
      [1]=>
      string(5) "brown"
      [2]=>
      string(8) "caffeine"}
      

  4.   

    void list ( mixed $varname , mixed $... )mixed是任意类型。也可以是一个数组元素