数组遍历的四种方法

目录

  1. 使用 for 循环遍历数组

    count($arr) // 用于统计数组元素的个数

    for循环只能用于遍历,纯索引数组!!!!

    如果存在关联数组,count统计时会统计两种数组的总个数,使用for循环遍历混合数组,导致数组越界!!

    
    $arr = array(1, 2, 3, 5, 6, 7);
    $num = count($arr);        // count 最好放到for外面,可以让函数只执行一次
    echo "数组元素的个数{$num}<br/>";
    for($i=0;$i<$num;$i++){
    	echo "{$i}==>{$arr[$i]}<br/>";
    }
    
    
  2. 使用 foreach 循环遍历数组

    foreach可以遍历任何类型的数组!!!

    $arr = array(1, 2, 3, "one"=>(4, 5, 6, 7));
    foreach($arr as $value){
       	echo "{$item}<br>";
    }
    foreach($arr as $key => $value){
    	echo "{$key}==>{$item}<br>";
    }
    
  3. 使用 list(), each(), while() 遍历数组

    list():用于将数组的每一个值,赋值给list函数的每一个参数。(list函数的参数,必须小于等于数组的元素个数);

    eg:

    list($a, $b, $c) = [1,2,3];	// $a=1; $b=2; $c=3;
    
    // list可以通过空参数,选择性的解析数组的值
    list($a, , $b) = [1, 2, 3];	// $a=1;  $b=3;
    

    each():用于返回数组当前指针所在位的键值对!并将指针后移一位;返回值:如果指针有下一位,返回一个数组。包含一个索引数组(0-键,1-值)和一个关联数组(“key”-键,“value”-值);如果指针没有下一位,返回false;

    • each($arr) 返回数组或false;
    • 把数组或false赋值给$a;
    • while判断$a如果是数组,继续执行下一次;
    • 如果$a是false,终止循环
    while($a = each($arr)){
    	echo "{$a[0]} --> {$a[1]}<br>";  
    	echo "{$a['key']} --> {$a['value']}<br>";  
    }
    
    while (list($key, $value) = each($arr)) {
    	echo "{$key} --> {$value}<br>";  
    }
    
    // 数组使用each()遍历完一遍后,指针使用处于最后一位的下一位;即再用each(),始终返回false;
    // 如果还需使用,需用reset($arr);函数,重置数组指针;
    reset($arr);
    
  4. 使用数组指针遍历数组

    ① next:将数组指针,后移一位。并返回后一位的值;没有返回false
    ② prev:将数组指针,前移一位。并返回前一位的值;没有返回false
    ③ end: 将数组指针,移至最后一位,返回最后一位的值;空数组返回false
    ④ reset:将数组指针,恢复到第一位。并返回第一位的值;空数组返回false
    ⑤ key: 返回当前指针所在位的键;
    ⑥ current:返回当前指针所在位的值;

    $arr = [1, 2, 3, 4, "one" => 5];
    while (true) {
    	echo key($arr);
    	echo "--";
    	echo current($arr);
    	echo "<br>";
    	if (!next($arr)) {
    		break;
    	}
    }
    reset($arr);
    
    //第二种方式:
    do {
    	echo key($arr);
    	echo "--";
    	echo current($arr);
    	echo "<br>";
    } while(next($arr));
    reset($arr);
    

参考:
https://www.cnblogs.com/waj6511988/p/6927208.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值