码迷,mamicode.com
首页 > 编程语言 > 详细

PHP之历遍数组问题(while迭代list()与each()历遍数组原理)

时间:2015-04-02 13:07:55      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

今天学习数组的时候遇到了一个让我头疼了很久的问题,当然,对于像我这样刚刚学习的人或许会有或多或少的帮助。

首先,我定义了一个二维数组,如下:

$product=array(
array(‘Code‘=>‘TIRE‘,‘Description‘=>‘Tires‘,‘Price‘=>100),
array(‘Code‘=>‘OIL‘,‘Description‘=>‘Oil‘,‘Price‘=>10),
array(‘Code‘=>‘SPARK‘,‘Description‘=>‘Spark
Plugs‘,‘Price‘=>200)
);
//我个人比较喜欢用这种方式定义数组,方便于于检索它。
然后我用了一个迭代来历遍,然后加上一个for循环来输出它(请别问为什么不用forache,到这个问题的时候我还没有学到forache)。如下:
for($row=0;$row<3;$row++){
while(list($key,$value)=each($product[$row])){
echo"|$value";
}
echo
‘<br>‘;
}
当然这样运行时没有问题的,结果如下:
|TIRE|Tires|100
|OIL|Oil|10
|SPARK|Spark Plugs|200

可是,我刚刚开始打这段代码的时候出现了一个小问题,我不小心把While里面的each漏了,神奇的结果发生了,我的服务器无法正常运行了,一直处于一个正在连接的状态,我很头疼,一开始我还以为是服务器的问题,
最后找出来了,的确是服务器的问题,因为服务器崩了,经过我的大量查询以后,我总算是弄明白了原因。原来这样历遍的原理是利用list()和each()来对数组进行历遍和输出。我们来看下关于这点两个函数的用法:

PHP each() 函数

each() 函数生成一个由数组当前内部指针所指向的元素的键名和键值组成的数组,并把内部指针向前移动。

返回的数组中包括的四个元素:键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。

如果内部指针越过了数组范围,本函数将返回 FALSE。

PHP list() 函数

list() 函数用数组中的元素为一组变量赋值。

注意,与 array() 类似,list() 实际上是一种语言结构,不是函数。

 

不难看出,通过list()与each()组合可以将数组输出,当each()函数访问到数组外的地址是返回FALSE,就停止了迭代,当漏了each的时候,判断语句就成为了一个TRUE值,也就导致了一个死循环,从而让服务器崩溃了。




PHP之历遍数组问题(while迭代list()与each()历遍数组原理)

标签:

原文地址:http://www.cnblogs.com/sunxiaorui/p/4386592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!