使用foreach和while循环(使用each()函数)在php中迭代数组是否有任何特殊规则?
我是PHP新手。 我的问题是,当我使用以下脚本时:使用foreach和while循环(使用each()函数)在php中迭代数组是否有任何特殊规则?,php,foreach,while-loop,Php,Foreach,While Loop,我是PHP新手。 我的问题是,当我使用以下脚本时: $arr1 = array('fname' => 'niraj','lname' => 'kaushal','city' => 'lucknow'); while(list($key, $value) = each($arr1)){ echo "$key has $value value <br>"; } foreach($arr1 as $key => $value){ echo "$key:$v
$arr1 = array('fname' => 'niraj','lname' => 'kaushal','city' => 'lucknow');
while(list($key, $value) = each($arr1)){
echo "$key has $value value <br>";
}
foreach($arr1 as $key => $value){
echo "$key:$value <br>";
}
但当我改变foreach和while循环的顺序时,如下所示
$arr1 = array('fname' => 'niraj','lname' => 'kaushal','city' => 'lucknow');
foreach($arr1 as $key => $value){
echo "$key:$value <br>";
}
while(list($key, $value) = each($arr1)){
echo "$key has $value value <br>";
}
为什么第二个脚本不显示while循环的输出。原因是什么。这是因为each()
只返回当前键/值,然后推进内部计数器(当前在数组中的位置)。它不会重置它
第一个循环(foreach
)将内部计数器设置为数组的末尾,因此第二个循环认为它已经完成,因此不执行任何操作
在使用each()
启动循环之前,需要在数组上调用reset()
:
reset($arr1);
while(列表($key,$value)=每个($arr1)){
echo“$key有$value
”;
}
谢谢@sverri-m-olsen
$arr1 = array('fname' => 'niraj','lname' => 'kaushal','city' => 'lucknow');
foreach($arr1 as $key => $value){
echo "$key:$value <br>";
}
while(list($key, $value) = each($arr1)){
echo "$key has $value value <br>";
}
fname:niraj
lname:kaushal
city:lucknow
reset($arr1);
while (list($key, $value) = each($arr1)){
echo "$key has $value value <br>";
}