PHP循环遍历数组的方式及foreach和each的区别

本文介绍了PHP中三种常见的数组遍历方法:for循环、foreach循环和each结合while、list。重点讨论了foreach与each的区别,指出foreach适用于索引和关联数组,而each用于获取当前指针位置的元素并前进。在使用each后,若要继续遍历,需调用reset重置指针。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客官,留下你的赞;成为我的粉丝,一起上车哦!评论区欢迎你的留言

PHP遍历数组的方法经常用到的有:

  1. for循环遍历
  2. foreach遍历
  3. each结合while、list遍历
for循环遍历

注意:for循环遍历只针对于索引数组,不能用于关联数组

/**
 * 1.for循环遍历-只能针对索引数组
 */
$for_arr     = [1, 2, 3];
$for_arr_len = count($for_arr);

for($i = 0; $i < $for_arr_len; $i++) {
   echo $for_arr[$i] . PHP_EOL;
}
foreach遍历

注意:foreach遍历即可用于索引数组也可用于关联数组

/**
 * 2.foreach循环遍历-既能针对索引数组又能针对关联数组
 */
//索引数组
$foreach_arr1 = [1, 2, 3];
foreach($foreach_arr1 as $k1 => $v1) {
   echo 'key=' . $k1 . ', value=' . $v1 . PHP_EOL;
}

//关联数组
$foreach_arr2 = ['a' => 1, 'b' => 2, 'c' => 3];
foreach($foreach_arr2 as $k2 => $v2) {
   echo 'key=' . $k2 . ', value=' . $v2 . PHP_EOL;
}
each 遍历

注意:each 结合while、list遍历即可用于索引数组也可用于关联数组

/**
 * 3.each结合while、list循环遍历--既能针对索引数组又能针对关联数组
 */
//索引数组
$each_arr1 = [1, 2, 3];
while(list($k1, $v1) = each($each_arr1)) {
   echo 'key=' . $k1 . ', value=' . $v1 . PHP_EOL;
}

//关联数组
$each_arr2 = ['a' => 1, 'b' => 2, 'c' => 3];
while(list($k2, $v2) = each($each_arr2)) {
   echo 'key=' . $k2 . ', value=' . $v2 . PHP_EOL;
}
foreach遍历和each遍历的区别
  1. each()函数的作用是输出当前指针指向的数组元素并且指针在向前移动一位,当前指针已经指向数组元素的末尾的时候,each会返回false。这个时候,如果后面还有代码是通过each循环输出,则返回false,这个时候需要重置指针,让指针指向数组元素的第一个元素。
  2. foreach 每次都会自己重置数组指针,把指针始终指向数组的第一个元素。
两个each

$each_arr = [1, 2, 3];
while(list($k, $v) = each($each_arr)) {  //循环完毕后,数组指针回指向末尾的元素
   var_dump('key=' . $k . ', value=' . $v) . PHP_EOL;
}

while(list($k, $v) = each($each_arr)) {    //由于指针已经指向数组的末位尾元素,each返回false,不进入循环。
   var_dump('key=' . $k . ', value=' . $v) . PHP_EOL;
}

结果:
在这里插入图片描述

两个each和reset
$each_arr = [1, 2, 3];
while(list($k, $v) = each($each_arr)) {    //循环完毕后,数组指针会指向末尾的元素
   var_dump('key=' . $k . ', value=' . $v) . PHP_EOL;
}

reset($each_arr);  // 重置指针即指针指向数组第一个元素

while(list($k, $v) = each($each_arr)) {
   var_dump('key=' . $k . ', value=' . $v) . PHP_EOL;
}

结果:
在这里插入图片描述

先each后foreach
$each_arr = [1, 2, 3];
while(list($k, $v) = each($each_arr)) {    //循环完毕后,数组指针回指向末尾的元素
   var_dump('key=' . $k . ', value=' . $v) . PHP_EOL;
}

foreach($each_arr as $k => $v) {  //foreach 每次都会把数组内部指针指向第一个元素
    var_dump('key=' . $k . ', value=' . $v) . PHP_EOL;
}

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值