php数组的遍历函数与方法例子

PHP中数组遍历方法有很多种,如有:for,foreach,while(),list(),each()这些函数方法都要我们在数组遍历中会用到的,下面给大家介绍一下.

1. 使用for语句循环遍历数组

a. 其它语言(只有这一种方式) 

b. PHP中这种方式不是我们首选方式 

c. 数组必须是索引数组,而且下标还必须是连续的 索引数组下标还可以不连序,数组还有关联数组)

PHP实例代码如下:

  1. <?PHP 
  2. /* 
  3. * 我们想要在遍历的过程中改变以下数组中某些元素的值 
  4. */ 
  5. $people = Array( 
  6. Array(’name’ => ‘Kalle’, ’salt’ => 856412), 
  7. Array(’name’ => ‘Pierre’, ’salt’ => 215863) 
  8. ); 
  9. for($i = 0; $i < sizeof($people); ++$i
  10. $people[$i]['salt'] = rand(000000, 999999); 
  11. ?> 

以上代码的问题,在于for的第二个表达式会导致代码执行很慢--因为每次循环时都要 计算一遍数组的长度,由于数组的长度始终不变,我们可以用一个中间变量来存储数组长度,然后用这个变量作为for循环的第二个表达式,这样在循环的时候就可以直接使用该变量的值,不用每次重新计算,代码如下:

  1. <?PHP 
  2. $people = Array( 
  3. Array(’name’ => ‘Kalle’, 
  4. Array(’name’ => ‘Pierre’, ’salt’ => 215863) 
  5. ); 
  6. for($i = 0, $size = sizeof($people); $i < $size; ++$i
  7. $people[$i]['salt'] = rand(000000, 999999); 
  8. ?> 

2.使用foreach语句循环遍历数组

  1. foreach(数组变量 as 变量值){  
  2.  循环体  

a.循环次数由数组的元素个数决定 

b.每一次循环都会将数组中的元素分别赋值给后面变量

  1. foreach(数组变量 as 下标变量=> 值变量){ 

foreach遍历3维数组:

  1. //foreach循环一个3维数组 
  2. /* 
  3. $biaoge=array
  4. 市场部=>array
  5. array(1,gaomou1,jingli11,4000), 
  6. array(2,gaomou2,jingli22
  7. array(3,gaomou3,jingli33,4000) 
  8.  ), 
  9. 客服部=>array
  10. array(1,gao1,li11
  11. array(2,gao2,li22
  12. array(3,gao3,li33,4000) 
  13. ), 
  14. 业务部=>array
  15.  array(1,mou1,jing11
  16.  array(2,mou2,jing22
  17.  array(3,mou3,jing33,4000) 
  18.  ); 
  19. foreach($biaoge as $key=>$value){ 
  20. echo '<table align=center width=600 border=1>'
  21. echo '<caption>联系表</caption>'
  22. echo '<tr bgcolor=#dddddd>'
  23. echo '<th>标号</th><th>名字</th><th>职位</th><th>工资</th></tr>'
  24. foreach($value as $row){ 
  25. if($row%2==0){ 
  26. $bg=#ffffff
  27.  }else
  28.  $bg=#dddddd
  29.  } 
  30.  echo '<tr bgcolor='.$bg.'>'
  31.  foreach($row as $col){ 
  32.  echo '<td>'.$col.'</td>'
  33.  } 
  34.  echo '</tr>'
  35. echo '</table>'
  36.  } 
  37. echo <pre>
  38. print_r($biaoge); 
  39. echo </pre>

3. while() list() each() 组合循环遍历数组

each()函数.

a. 需要一个数组作为参数 

b. 返回来的也是一个数组 

c. 返回来的数组是0,1,key,value四个下标(固定的)

0和key下标是当前参数数组元素的?

1和value下标是当前对数数组元素的值

d. 认认当前元素就是第一个元素 

e. 每执行一次后就会将当前元素向后移动 

f. 如果到最后的元素再执行这个函数,则返回false

使用each遍历数组的示例代码如下:

  1. <?PHP 
  2. //使用each函数遍历数组 
  3. $arrGoogle=array('google','Gmail','Chrome','Android'); 
  4. //第一次使用each取得当前键值对,并且将指针移到下一个位置 
  5. $arrG=each($arrGoogle); 
  6. //打印结果,并且换行以清晰显示结果 
  7. print_r($arrG); 
  8. print '<br>'
  9. $arrGmail=each($arrGoogle); 
  10. print_r($arrGmail); 
  11. print '<br>'
  12. $arrChrome=each($arrGoogle); 
  13. print_r($arrChrome); 
  14. print '<br>'
  15. $arrAndroid=each($arrGoogle); 
  16. print_r($arrAndroid); 
  17. print '<br>'
  18. //当指针位于数组末尾再次执行函数each,如果是这样再次执行结果返回false 
  19. $empty=each($arrGoogle); 
  20. //如果指针无法继续后移返回false 
  21. if($empty==false){ 
  22. print '指针以位于数组末尾,无法在向后移,故返回false'
  23. ?> 

注意:该函数的参数和返回值(在执行该函数前指针不位于数组末尾时)都为数组,在执行函数前数组指针位于数组末尾时再次执行该函数返回值为false,开始的位置是第一个元素,每(正常)执行一次该函数,指针向后移到下一个地址.

list()函数

a. list()=array(); 需要将一个数组赋值给这个函数 

b. 数组中的元素个数,要和list()函数中的参数个数相同 

c. 数组中的每个元素值会赋值list()函数中的每个参数,list()将每个参数转为变量 

d. list()只能接收索引数组 

e. 按索引的下标的顺序

这不是真正的函数,而是PHP的语言结构,list()用一步操作给一组变量进赋值,即把数组中的值赋给一些变量,list()仅能用于数字索引的数组并假定数字索引从0开始,语法格式如下所示:

list(mixed varname,mixed ...)=array_expression  //list()语句的语法格式

list()语句和其它函数在使用上有很大的区别,并不是直接接收一个数组作为参数,而是通过“=”去处符以赋值的方式,将数组中每个元素的值,对应的赋给list()函数中的每个参数,list()函数又将它中的每个参数转换为直接可以在脚本中使用的变量,使用方法如下:

  1. <?PHP 
  2. $info=array('coffee','brown','caffeine');              //声明一个索引数组$info 
  3.  
  4. list($drink,$color,$power)=$info;                      //将数组中的所有元素转为变量 
  5. echo $drink is $color and $power makes it special.n;//输出的三个变量值是数组中三个元素的值 
  6.  
  7. list($drink, ,$power)=$info;                           //将数组中的部分元素变为变量 
  8. echo $drink has $power.n;                           //输出的两个变更值是数组中的前两个元素的值 
  9.  
  10. list(,$power)=$info;                                  //跳过前两个变量只将数组中第三个元素的值转为变量 
  11. echo I need $power!n;                               //输出一个变量值是数组中桃花汛三个元素的值勤 
  12. ?> 

通过上例了解list()函数用法之后,将each()函数和list()函数结合起来使用,代码如下:

  1. <?PHP 
  2. $contact=array(ID=>1,姓名=>高某,公司=>A公司,地址=>北京市); 
  3. list($key,$value)=each($contact);           //将each()函数和list()函数联合使用 
  4. echo $key=>$value;      //输出变量$key和$value,中间使用=>分隔 
  5. ?> 

while() 函数

while()循环的语法格式如下:

  1. while( list($key,$value) = each(array_expressin) ){ 
  2.        循环体; 

使用这种组合改写前面使用foreach遍历过的一维数组,代码如下所示:

  1. <?PHP 
  2.  //声明一个一维的关联数组$contact 
  3.  $contact=array(ID=>1, 
  4.   姓名=>高某
  5.   公司=>A公司
  6.   地址=>北京市
  7.   电话=>(010)987665432
  8.   EMAIL=>gao@PHP.com 
  9.  ); 
  10.  //以HTML列表的方式输出数组中每个元素的信息 
  11.  echo '<dl>一个联系人信息:'
  12.  while(list($key,$value) = each($contact) ){      //将foreach语句改写成while,list()和each()的组合 
  13.   echo <dd>$key:$value</dd>;                 //输出每个元素的键/值勤 
  14.   } 
  15.  echo '</dl>'
  16. ?> 

while() 遍历数据是需要结合list或each函数配置才可以遍历,否则它单独是无法完成数组遍历的.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...