登陆 注册

php遍历数组有哪些方式?

守望者 2020-03-27 243人围观 ,发现0个评论 php

1.普通遍历:

    这是大多数人都会想到的一种遍历方式,那就是通过数组下标进行遍历php数组。

    

  例1,用for循环遍历:

  $arr = array('欢','迎','来','到','兔','峰','博','客');
 
  $len = count($arr);

  for($i=0;$i<$len;$i++)
      echo $arr[$i];
  }

 

  例2,用while循环遍历:

   $arr = array(0=>'欢',2=>'迎',4=>'来',6=>'到',8=>'兔',10=>'峰',12=>'博',14=>'客');
   $len = count($arr);
   $i = 0;

   while($i<$len*2){

    echo $arr[$i];
    $i+=2;
   }


  优点:使用起来比较熟悉,上手快。

  缺点:仅适用于下标为数字型数组,并且下标之间有一定规律可循,比如例1是递增1,例2是递增2。


2. list遍历:

    公式:list($v1,$v2,$v3....) = array($value1,$value2,$value3....);

    可理解为:将array数组的里面的value值从左到右依次赋给list里面的形参$v1,$v2,$v3....

    其中,list函数里面的形参的个数必须小于等于数组的元素个数,举例如下:

$arr = array('欢','迎','来','到','兔','峰','博','客');

list($v1,$v2,$v3,$v4) = $arr;

echo "$v1 $v2 $v3 $v4";   // 输出:欢 迎 来 到

   

  缺点:list本质是一种数据结构,而不是函数,类似于array数组, 所以单独使用list遍历数组是毫无意义的


3. each遍历:

   调用each函数将返回一个新的数组,该数组包含两个元素,分别是所遍历数组的key值和value值

   没调用一次each函数都将指针移向下一位,直至末尾,完成遍历,举例:


$arr = array(2=>'欢',4=>'迎',6=>'来',8=>'到',10=>'兔',12=>'峰',14=>'博',16=>'客');

   while($a = each($arr)){

     echo "key=".$a[0]." , value=".$a[1]."<br>";
   }

 输出如图:

             

  

4. list+each遍历:

    这种组合型遍历方式结合了list和each各自的特点。

    先由each返回一个包含key,value的新数组,再将这个新数组交给list进行遍历,举例如下:

  $arr = array(2=>'欢',4=>'迎',6=>'来',8=>'到',10=>'兔',12=>'峰',14=>'博',16=>'客');
 
   while(list($key,$value) = each($arr)){
       echo "key=$key , value=$value <br>";
   }

输出如图:

             




5. foreach遍历:

   使用范围广,使用灵活,举例如下:


    例1,使用一个形参表示数组的value值:

$arr = array(2=>'欢',4=>'迎',6=>'来',8=>'到',10=>'兔',12=>'峰',14=>'博',16=>'客');

    foreach($arr as $value){
        echo $value;
   }

 

   例2,使用如下这种两个形参组合的方式则分别表示数组的key值和value值:

$arr = array(2=>'欢',4=>'迎',6=>'来',8=>'到',10=>'兔',12=>'峰',14=>'博',16=>'客');
  
   foreach($arr as $key=>$value){
      echo "key=$key , value=$value <br>";
   }


6. 指针遍历:

      通过数组指针遍历可以灵活的实现向后遍历和向前遍历,常用数组指针函数如下:


   next($arr):将数组指针,后移一位。并返回后一位的值;没有返回false
    prev($arr):将数组指针,前移一位。并返回前一位的值;没有返回false
    end($arr):  将数组指针,移至最后一位,返回最后一位的值;空数组返回false
    reset($arr):将数组指针,恢复到第一位。并返回第一位的值;空数组返回false
    key($arr): 返回当前指针所在位的键;
    current($arr):返回当前指针所在位的值;


    例1,从前往后遍历:

$arr = array(2=>'欢',4=>'迎',6=>'来',8=>'到',10=>'兔',12=>'峰',14=>'博',16=>'客');
 
   do{
        echo "key=".key($arr)." , value=".current($arr)."<br>";
   }while(next($arr));


   例2,从后往前遍历:

 $arr = array(2=>'欢',4=>'迎',6=>'来',8=>'到',10=>'兔',12=>'峰',14=>'博',16=>'客');
 
   end($arr);

  do{
    echo "key=".key($arr)." , value=".current($arr)."<br>";
  }while(prev($arr));


 温馨提示:推荐第3,4,5,6种方法遍历数组,使用范围广。


 转载请注明本文链接:https://tufeng.xyz/php/31.html,谢谢合作!

请发表您的评论
请关注微信公众号
微信二维码