是否有任何特殊规则使用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>"; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |