关于php的数组循环遍历方式这件事

1. for 循环#

  • 基本语法
    for (初始化; 条件; 更新) {
        循环体;
    }
  • 示例

    $array = [1, 2, 3, 4, 5];
    for ($i = 0; $i < count($array); $i++) {
        echo "当前索引是:$i,对应的值是:{$array[$i]}\n";
    }
  • 说明
    适用于已知循环次数或数组索引明确的场景。
    count($array) 函数用于获取数组的长度。
    通过 $i 控制数组索引,逐个访问数组元素。

2. foreach 循环#

  • 基本语法
    foreach (数组 as $键 => $值) {
        循环体;
    }
  • 示例
    $array = [1, 2, 3, 4, 5];
    foreach ($array as $value) {
        echo "当前值是:$value\n";
    }
    
    $assocArray = ['a' => 1, 'b' => 2, 'c' => 3];
    foreach ($assocArray as $key => $value) {
        echo "当前键是:$key,对应的值是:$value\n";
    }
  • 说明
    适用于遍历数组中的每个元素。
    可以直接访问数组的值,也可以通过键值对访问。
    支持索引数组和关联数组。

3. foreach 带引用#

  • 语法
    foreach (数组 as &$值) {
        循环体;
    }
  • 示例

    $array = [1, 2, 3, 4, 5];
    foreach ($array as &$value) {
        $value *= 2;
    }
    print_r($array);
  • 说明
    通过引用 $value,可以在循环中直接修改数组的值。
    修改 $value 会影响原始数组。

4. while 循环#

  • 基本语法
    while (条件) {
        循环体;
    }
  • 示例
    $array = [1, 2, 3, 4, 5];
    $i = 0;
    while ($i < count($array)) {
        echo "当前索引是:$i,对应的值是:{$array[$i]}\n";
        $i++;
    }
  • 说明
    适用于不确定循环次数或需要更灵活控制循环条件的场景。
    需要手动控制循环条件和索引递增。

5. do-while 循环#

  • 基本语法
    do {
        循环体;
    } while (条件);
  • 示例
    $array = [1, 2, 3, 4, 5];
    $i = 0;
    do {
        echo "当前索引是:$i,对应的值是:{$array[$i]}\n";
        $i++;
    } while ($i < count($array));
  • 说明
    类似于 while 循环,但至少会执行一次循环体。
    适用于需要确保循环体至少执行一次的场景。

6. array_map 函数#

  • 语法
    array_map(callable $callback, array $array1, array $array2, ...)
  • 示例
    $array = [1, 2, 3, 4, 5];
    $result = array_map(function($value) {
        return $value * 2;
    }, $array);
    print_r($result);
  • 说明
    对数组中的每个元素应用回调函数,并返回一个新的数组。
    不会修改原始数组。

7. array_walk 函数#

  • 语法
    array_walk(array &$array, callable $callback, mixed $userdata = NULL)
  • 示例
    $array = [1, 2, 3, 4, 5];
    array_walk($array, function(&$value) {
        $value *= 2;
    });
    print_r($array);
  • 说明
    对数组中的每个元素应用回调函数,可以修改原始数组。
    支持传递额外的用户自定义参数。

8. array_filter 函数#

  • 语法
    array_filter(array $array, callable $callback = null, int $flag = 0)
  • 示例
    $array = [1, 2, 3, 4, 5];
    $result = array_filter($array, function($value) {
        return $value % 2 === 0;
    });
    print_r($result);
  • 说明
    过滤数组中的元素,根据回调函数的返回值保留满足条件的元素。
    返回一个新的数组。

9. array_reduce 函数#

  • 语法
    array_reduce(array $array, callable $callback, mixed $initial = NULL)
  • 示例
    $array = [1, 2, 3, 4, 5];
    $sum = array_reduce($array, function($carry, $item) {
        return $carry + $item;
    }, 0);
    echo "总和是:$sum";
  • 说明
    将数组中的元素逐步累积为一个单一的值。
    返回最终的累积结果。

总结#

  • 基本循环forforeach
  • 带引用的循环foreach 带引用。
  • 函数式编程array_maparray_walkarray_filterarray_reduce
  • 其他循环whiledo-while

作者:Carver-大脸猫

出处:https://www.cnblogs.com/carver/articles/18724270

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载请注明原处

posted @   Carver-大脸猫  阅读(1)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu