php中数组遍历的四种方式

http://blog.csdn.net/wks19891215/article/details/51615384

php中数组遍历的四种方式   .


首先要讲一点的是:PHP中的数组与C/C++中的数组不同。

它是基于键值对结构的hash表来实现的(存在key/value的概念)。有点类似于Python和lua中的dictionary。

在没有显示指定key的情况下,默认以索引(0,1,2,3...)的形式来填充key字段。

另外,数组的使用时有一个指针的概念,有点像C++中的迭代器。迭代器总是指向容器中当前使用的对象。

下面来看php中的数组的四种遍历方式:




[php] view plain copy 
01.<?php  
02.  
03.  
04.$data      = array(  
05.    'a' => "AA",  
06.    'b' => "BB",  
07.    'c' => "CC"  
08.);  
09.$indexData = array(  
10.    '0' => "AA",  
11.    '1' => "BB",  
12.    '2' => "CC"  
13.);  
14.  
15.  
16.//第一种遍历方式,只适用于索引数组。PHP数组在没有指明key的情况下,默认是索引数组  
17.for ($i = 0; $i < sizeof($data); $i++) {  
18.    echo $indexData[$i] . "1" . "<br>";  
19.}  
20.  
21.  
22.//第二种遍历方式。可同时用于索引数组和关联数组,取出key和value  
23.foreach ($data as $key => $value) {  
24.    echo $value . "2" . "<br>";  
25.}  
26.  
27.  
28.//第三种遍历方式,可同时用于索引数组和关联数组,只取出value。(会改变数组当前指针)  
29.foreach ($data as $value) {  
30.    echo $value . "3" . "<br>";  
31.}  
32.  
33.  
34.//第四种遍历方式.可同时用于索引数组和关联数组,取出key和value(会改变数组当前指针)  
35.//因$data数组的指针在第三种方式中已经指向了数组尾部,故换一个数组  
36.while (list($key, $value) = each($indexData)) {  
37.    echo $value . "4" . "<br>";  
38.}  
39.  
40.  
41.?>  


输出结果:




[plain] view plain copy 
01.AA1  
02.BB1  
03.CC1  
04.AA2  
05.BB2  
06.CC2  
07.AA3  
08.BB3  
09.CC3  
10.AA4  
11.BB4  
12.CC4  





前三种都很容易看懂,下面来解释下第四种用法: 
each函数用来取出数组中当前指针指向的key/value对,然后将指针后移一位。

list函数用来将each函数取出的key/value对的值分别赋给两个变量。

 

posted @ 2017-06-23 10:07  sky20080101  阅读(132)  评论(0编辑  收藏  举报