为什么'list()'函数返回相反的顺序?

时间:2014-10-06 09:53:36

标签: php

PHP中的 list() 函数在文档中突出显示了这种情况:

  

警告   list()分配从最右边开始的值   参数。如果您使用的是纯变量,则无需担心   对这个。但是如果你通常使用带索引的数组   期望数组中索引的顺序与你在中写的相同   list()从左到右;它不是。它被分配在   逆序。

我不完全明白。这意味着什么?

您能否提供一个可以解释所述案例的代码示例?

3 个答案:

答案 0 :(得分:2)

class Ab
{
  public $a;
   function abc()
  {

     $this->a=array(10,2,30,"onkar"=>array(8,5,6));
  }
  function print()
  {

    echo "<br>printing original array";
    print_r($this->a);

    foreach($this->a as $key=>$value)
        {  
           if (strcmp("onkar",$key)!=0) 
            $temp[]=$value; 
           else
            {
                list($temp[],$temp[],$temp[])=$this->a["onkar"];
                print_r($temp);
            }
        }  
     }
}

这里在提取键“onkar”时,我们分别得到5,6,8(原来是8,6,5),如手册所示。希望这有帮助。

答案 1 :(得分:1)

从您对此问题的修改....请注意文档中与咖啡/棕色/咖啡因相关的示例....结果 是按照您期望的顺序,但 是相反的。 $info数组中的条目从左到右存储在正确的条目($a[0]$a[1]$a[2])中,但{{1}中的索引顺序由于函数在内部实际执行的方式而被颠倒过来....除非你重新列入数组,并期望按索引排序的结果,否则这不是问题

答案 2 :(得分:0)

你所有的例子都很好。您需要查看文档以了解list函数的工作原理。

但是如果你真的只想传入一个包含三个值的数组,你可以从数组中切割出前三个值。像这样。

list($first, $second, $third) = array_slice(array(1, 2, 3, 4, 5), 0, 3);