php - 数组循环遍历,为什么foreach循环后,无法用while+list+each循环输出

查看:168
本文介绍了php - 数组循环遍历,为什么foreach循环后,无法用while+list+each循环输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

创建一个键值对的数组,

`$prices = array('Tom' => 100, 'len' => 20, 'youuu' => 38);

先是用了foreach循环遍历数组输出,

foreach ($prices as $key => $value) {
    echo "$key - $value <br/> ";
}

然后接着使用

while (list($name, $price) = each($prices)) {
    echo "$name - $price <br/>";
} 

这边就无法再次输出了,但是如果再换成foreach的方法遍历输出的话,就可以再输出一遍。
或则是把上面的foreach代码注销掉也是可以正常输出.
求解惑,谢谢.

解决方案

在使用过一次while (list($name, $price) = each($prices))之后,因为使用了each函数会将数组内部的指针移动到最后,再次遍历的时候没有重置指针位置,就会出现不管怎么遍历都没有结果。

而使用foreach则会在每次遍历的时候自动设置指针到数组顶部,因此可以遍历出结果。

题主可以在使用while (list($name, $price) = each($prices))遍历一次之后,使用reset函数重置数组指针之后就可以了

reset($prices);
while (list($name, $price) = each($prices)) {
    echo "$name - $price \n";
}

这一部分内容可以参考一下PHP的迭代器。

这篇关于php - 数组循环遍历,为什么foreach循环后,无法用while+list+each循环输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆