Nir*_*hal 4 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:$value <br>";
}
Run Code Online (Sandbox Code Playgroud)
它输出
fname has niraj value
lname has kaushal value
city has lucknow value
fname:niraj
lname:kaushal
city:lucknow
Run Code Online (Sandbox Code Playgroud)
但是当我改变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>";
}
Run Code Online (Sandbox Code Playgroud)
它给出了以下输出
fname:niraj
lname:kaushal
city:lucknow
Run Code Online (Sandbox Code Playgroud)
为什么第二个脚本不显示while循环的输出.它背后的原因是什么.
这是因为each()只返回当前键/值然后推进内部计数器(当前阵列中的位置).它没有重置它.
第一个循环(foreach)将内部计数器设置为数组的末尾,因此第二个循环认为它已经完成,因此什么都不做.
您需要reset()在开始循环之前调用数组each():
reset($arr1);
while (list($key, $value) = each($arr1)){
echo "$key has $value value <br>";
}
Run Code Online (Sandbox Code Playgroud)