您好,欢迎访问一九零五行业门户网

each() 回到4个值, list 赋值哪两个

each() 返回4个值, list 赋值哪两个
初学php,请问each() 返回4个值, list 赋值哪两个
 100, 'oil' => 10, 'spark plugs' => 4);
$item = each($prices);
print_r($item);
echo 
;
reset($prices);
while(list($a, $b) = each($prices)) {
echo a:$a,b:$b 
;
}
?>
each($prices)的值是4个key value 的数组,
array ( [1] => 100 [value] => 100 [0] => tires [key] => tires )
而list($a, $b) = each($prices)) 为什么会把$item[key],$item[value]赋值给$a, $b,而不是$item[1],$item[value]。
list不应该是顺序赋值么。
网上找了,官方文档文档也找了,都没有准确答案,各位同学求解额
each list 分享到: ?10,?'spa... data-pics=>
------解决方案--------------------
有两个可能你没看到
 1.
   list() only works on numerical arrays and assumes the numerical indices start at 0.
也就是,优先使用的是数字索引的值。 
2.
list() assigns the values starting with the right-most parameter.
从参数列表的最右边开始赋值,所以$b 被赋值 0索引的值,也就是tires ,然后$a被赋值1索引的值,所以是100
------解决方案--------------------
观察如下事实:
list($a, $b) = array('a', 'b');
echo a:$a b:$b\n; //输出 a:a b:b
list($a, $b) = array(1 => 'a', 0 => 'b');
echo a:$a b:$b\n; //输出 a:b b:a
list($a, $b) = array('a'=>'a', 'b'=>'b');
echo a:$a b:$b\n; //输出 a: b:
错误信息:
undefined offset: 1
undefined offset: 0

可知 list 是按参数列表的序号依次从数组中提取相应的下标元素的
即列表中的变量的值就是数组下标的值,而与数组中下标的排列次序无关
那么特别的指出“从参数列表的最右边开始赋值”的意义何在呢?
请看这样的写法
list($a[$b][$c], $b, $c) = array('a', 'b', 'c');
print_r($a);

array
(
    [b] => array
        (
其它类似信息

推荐信息