初学php,请问each() 返回4个值, list 赋值哪两个
<?php
$prices = array('Tires' => 100, 'oil' => 10, 'Spark Plugs' => 4);
$item = each($prices);
print_r($item);
echo "<br />";
reset($prices);
while(list($a, $b) = each($prices)) {
echo "a:$a,b:$b <br />";
}
?>
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不应该是顺序赋值么。
网上找了,官方文档文档也找了,都没有准确答案,各位同学求解额eachlist
<?php
$prices = array('Tires' => 100, 'oil' => 10, 'Spark Plugs' => 4);
$item = each($prices);
print_r($item);
echo "<br />";
reset($prices);
while(list($a, $b) = each($prices)) {
echo "a:$a,b:$b <br />";
}
?>
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不应该是顺序赋值么。
网上找了,官方文档文档也找了,都没有准确答案,各位同学求解额eachlist
解决方案 »
- php 这句话啥意思?:require_once(DEDEINC.'/oxwindow.class.php');
- PHP开发中svn版本控制的问题
- ord()的问题
- php arclist标签,截取字符怎么在后面加上点点点
- 编辑器
- 给童鞋们一个精彩又漂亮的URL解决的方法。。
- PHP dir_open(),dio_stat(),dio_read($fd, $len),dio_write($fd,$string),exec()用法
- 求助、求一个浪漫的源码、大神们帮帮忙
- 高分请牛人!熟悉KindEditor这个编辑器的进来看看!
- 求各位大神有时间帮帮小弟看看进入phpMyAdmin为什么一直出现这个错,小弟昨天弄了一晚上都没解决,求大哥们帮帮忙
- QQ登录获取固定值 ,在线等、、、
- php 做 二代身份证读卡器的二次开发
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:blist($a, $b) = array(1 => 'a', 0 => 'b');
echo "a:$a b:$b\n"; //输出 a:b b:alist($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
(
[c] => a
)
)
由于 $c、$b 先于 $a 赋值,所以在向 $a[$b][$c] 赋值的时候不会出错
主要是这句话确实看掉了,
list() only works on numerical arrays and assumes the numerical indices start at 0.
list() 只工作于 索引从 0 开始的 数值数组