今天闲着无聊继续复习基础知识,大家习惯遍历数组的方法之一list()和each()组合让我有些...
$arr = array('hello' => 'world!');
//each返回的数据为
//[
// 1 => 'world',
// 'value' => 'world',
// 0 => 'hello',
// 'key' => 'hello'
//]
while(list($key, $value) = each($arr)){
echo $key . '=>' . $value . '
';
}
大家应该都知道each($arr)的返回值为一个长度为4的数组:
元素下标分别依次为[1],[value],[0],[key]
即结构为array(
1=>$value,
'value'=>$value,
0=>$key,
'key'=>$key);
键值1等同于键值value,会把当前指针所指的数组元素的值分别付给他俩
键值0等同于键值key,会把当前指针所指的数组元素的键值分别付给他俩
为什么四个值却能付给list($k, $v)而不报错呢?
这就是list()的特性,按数字下标赋值
即list()只会取数字下标的数组元素,然后按照升序选取依次赋值
上面each()的四个元素只会选取下标为[0]和[1]的,即分别代表当遍历数组元素的key和value
我们还可以做以下一个实例让list()更明了
$arr = array(3=>'list', 0=>'I', 2=>'a', 1=>'am');
list($var0, $var1, $var2, $var3) = $arr;
echo "$var0 $var1 $var2 $var3";
//output
I am a list
木错,list()挑食,他会在数组碗里只拿下标是数组键的,并且还很有原则,对号拿取~