php专区

 首页 > php专区 > PHP基础 > 数组 > php中数组遍历循环实现程序 - php数组

php中数组遍历循环实现程序 - php数组

分享到:
【字体:
导读:
          在php中对数组遍历用得最多要算是foreac,while,for这几种方法了,下面我们来介绍这三种遍历数组的实现程序代码吧。经常会有人问我,PHP的数组...

php中数组遍历循环实现程序

在php中对数组遍历用得最多要算是foreac,while,for这几种方法了,下面我们来介绍这三种遍历数组的实现程序代码吧。

经常会有人问我,PHP的数组,如果用foreach来访问,遍历的顺序是固定的么? 以什么顺序遍历呢?比如如下代码:

  1. $arr['laruence'] = 'huixinchen'
  2. $arr['yahoo'] = 2007; 
  3. $arr['baidu'] = 2008; 
  4. foreach ($arr as $key => $val)  
  5. //结果是什么? 

又比如如下代码:

  1. $arr[2] = 'huixinchen'
  2. $arr[1] = 2007;$arr[0] = 2008; 
  3. foreach ($arr as $key => $val)  
  4. //现在结果又是什么? 

当我们使用each/next系列函数来遍历的时候,也是通过移动数组的内部指针而实现了顺序遍历,这里有一个问题,比如如下代码:

  1. $arr = array(1,2,3,4,5); 
  2. foreach ($arr as $v) {//可以获取}  
  3. while (list($key$v) = each($arr)) 
  4.  {//获取不到} 
  5. ?> 

了解到我刚才介绍的知识,那么这个问题也就很明朗了,因为foreach会自动reset,而while这块不会reset,所以在foreach结束以后,pInternalPointer指向数组最末端, while语句块当然访问不到了,解决的办法就是在each之前,先reset数组的内部指针.

也就是说, PHP中遍历数组的顺序, 是和元素的添加先后相关的, 那么, 现在我们就很清楚的知道,文章开头的问题的输出是:

huixinchen,2007,2008

所以,如果你想在数字索引的数组中按照索引大小遍历,那么你就应该使用for,而不是foreach,代码如下:

  1. for($i=0,$l=count($arr); $i<$l$i++)  
  2. //这个时候,不能认为是顺序遍历(线性遍历)} 
分享到:
php数组操作二维数组排序问题方法详解
php数组操作二维数组排序问题方法详解 PHP中二维数组排序,可以使用PHP内置函数uasort() 示例一: 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联 回调函数如下:注意回调函数的返回值是负数或者是false的时候,表示回调函数的第一个参数在前,第二个参数在后排列 $person = array(   array(&#039;num&#...
php数组定义与变量销毁和一维数组排序 - ...
php数组定义与变量销毁和一维数组排序 本文章先是介绍关于php中的数组定义与数组的销毁,之后再用一个实例来说明一维数据的排序方法。 PHP数组的定义,代码如下: $array = array(&#039;one&#039;,&#039;two&#039;,&#039;three&#039;);  var_dump($array);  在本代码片段的第...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……