$colors = array(
'r' => 'a',
'g' => 'b',
'b' => 'c'
);
list($v, $k) = each($colors);
echo $v . " " . $k
现在上面打印了一个 我很惊讶,因为我认为'list'结构只适用于数值数组。它为什么有效?
答案 0 :(得分:5)
是的,你是对的list() only works on numerical arrays and assumes the numerical indices start at 0.但是他因为each
而导致你的代码正常运作。
each
traverse an array
因此,如果您运行以下内容,请将keys
转换为numerical
示例:
$foo = array("r"=>"a");
$bar = each($foo);
echo "<pre>";
print_r($bar);
输出
Array
(
[1] => a
[value] => a
[0] => r
[key] => r
)
您可以使用array('r' => 'a');
已转换为array(0 => 'r', 1 => 'a');
,因此您现在可以使用list
,因为他们现在拥有numerical keys
each返回数组中的当前键和值对并使数组光标前进。
each返回数组数组中的当前键和值对。该对以四元素数组返回,其中包含键0,1,键和值。元素0和键包含数组元素的键名,1和值包含数据。
另外
each()通常与list()一起用于遍历数组,这是一个例子:
答案 1 :(得分:2)
阅读each()
附近的手册:
返回数组数组中的当前键和值对。该对以四元素数组返回,其中包含键0,1,键和值。元素0和键包含数组元素的键名,1和值包含数据。
因此,当您执行each($colors)
时,将返回以下内容:
array(0 => 'r' => 1 => 'a', 'key' => 'r', 'value' => 'a')
然后list()
获取0
和1
的值,并分别将它们分配给$v
和$k
。有意义吗?