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);