加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

是否有任何特殊规则使用foreach和while循环(使用each()函数)迭代

发布时间:2020-12-13 17:49:20 所属栏目:PHP教程 来源:网络整理
导读:我是 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
我是 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>";

}

它输出

fname has niraj value 
lname has kaushal value 
city has lucknow value 
fname:niraj 
lname:kaushal 
city:lucknow

但是当我改变foreach和while循环的顺序如下

$arr1 = array('fname' => 'niraj','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

为什么第二个脚本不显示while循环的输出.它背后的原因是什么.

解决方法

这是因为each()只返回当前键/值,然后推进内部计数器(当前数组中的位置).它没有重置它.

第一个循环(foreach)将内部计数器设置为数组的末尾,因此第二个循环认为它已经完成,因此不执行任何操作.

在使用each()开始循环之前,需要在数组上调用reset():

reset($arr1);
while (list($key,$value) = each($arr1)){
    echo "$key has $value value <br>";
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读