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


Why the 'list()' function returns a reverse order?

PHP中的list()函数在文档中强调了这种情况:

警告list()分配从最右边开始的值参数如果您使用的是纯变量,则不必担心关于这个。但是,如果使用带索引的数组,通常期望数组中索引的顺序与您在list()从左到右;事实并非如此。它被分配在相反的顺序。

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

你能提供一个代码示例来解释所描述的情况吗

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),如手册所示。希望这有帮助。

从您对这个问题的修改。。。。注意文档中关于咖啡/棕色/咖啡因的注释上方的示例。。。。结果与您预期的顺序一致,但相反。$info数组中的条目从左到右存储在正确的条目($a[0]$a[1]$a[2])中,但由于函数实际在内部执行的方式,$a中的索引顺序颠倒。。。。这不是一个问题,除非您向数组列出,并期望结果按其索引

排序

您的所有示例都运行良好。您需要查看文档以了解列表函数是如何工作的。

但是,如果你真的只想传入一个有三个值的数组,你可以从数组中截取前三个值。就像这样。

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