找回密码
 注册

微信扫码登录

使用验证码登录

只需一步,快速开始

胜天工科技销售各种数字电视信号调制卡胜天工科技销售各种数字电视信号码流卡

【游客、新手、注册会员的区别】 【积分策略和会员晋级说明】 【发帖和附件上传规则】 【如何下载感兴趣的资料】 【如何获取梦游币】 【侵权资料处理及免责说明】
查看: 1858|回复: 1

PHP 数组遍历 foreach 语法结构

[复制链接]
  • TA的每日心情
    开心
    2026-4-27 11:48
  • 签到天数: 4186 天

    [LV.Master]伴坛终老

    发表于 2016-9-17 17:25:23 | 显示全部楼层 |阅读模式
    分享到:
    消息来自- 北京
    foreach 语法结构用于遍历数组。

    foreach()

    PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。

    语法:
    1. foreach (array as $value)
    2.     statement
    3. // 或者:
    4. foreach (array as $key => $value)
    5.     statement
    复制代码


    上述语法中,每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步。在第二种语法格式中还将当前单元的键名也会在每次循环中赋给变量 $key。

    例子:
    1. <?php
    2. $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
    3. foreach ($arr_age as $age) {
    4.     echo $age,'<br />';
    5. }
    6. ?>
    复制代码


    运行该例子输出:
    1. 18
    2. 20
    3. 25
    复制代码


    使用数组键值
    1. <?php
    2. $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
    3. foreach ($arr_age as $key=>$age) {
    4.     echo $key,': ',$age,'<br />';
    5. }
    6. ?>
    复制代码


    运行例子输出:
    1. wang: 18
    2. li: 20
    3. zhang: 25
    复制代码


    提示

    当 foreach 开始执行时,数组内部的指针会自动指向第一个单元,这意味着不需要在 foreach 循环之前调用 reset()。
    foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。对返回的数组单元的修改也不会影响原数组(见下面例子),但 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。

    1. <?php
    2. $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
    3. foreach ($arr_age as $age) {
    4.     $age = $age+10;
    5.     echo $age,'<br />';
    6. }
    7. // 输出原数组
    8. print_r($arr_age);
    9. ?>
    复制代码


    运行例子输出:
    1. 28
    2. 30
    3. 35
    4. Array ( [wang] => 18 [li] => 20 [zhang] => 25 )
    复制代码


    要在 foreach 中修改原数组元素,可以通过引用来实现,将上面的例子更改为:
    1. <?php
    2. $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25);
    3. foreach ($arr_age as &$age) {
    4.     $age = $age+10;
    5.     echo $age,'<br />';
    6. }
    7. // 输出原数组
    8. print_r($arr_age);
    9. ?>
    复制代码


    运行例子输出:
    1. 18
    2. 20
    3. 25
    4. Array ( [wang] => 28 [li] => 30 [zhang] => 35 )
    复制代码


    遍历多维数组

    foreach 语法结构只能用于遍历一维数组,要遍历多维数组,一般是将 foreach 嵌套递归使用或者将原数组分割为一维数组再进行 foreach 遍历。
    一二维数组混合的例子:
    1. $arr_age = array("wang"=>18, "li"=>20, "zhang"=>array("name"=>"小张", "age"=>25));
    2. foreach ($arr_age as $age) {
    3.     if(is_array($age)){
    4.         foreach ( $age as $detail) {
    5.         echo $detail,'<br />';
    6.         }
    7.     } else {
    8.         echo $age,'<br />';
    9.     }
    10. }
    11. ?>
    复制代码

    运行该例子输出:
    1. 18
    2. 20
    3. 小张
    4. 25
    复制代码


    对多维数组的遍历处理就要根据实际的数据结构而采取最合适的处理方式。

    延伸预读

    PHP 数组是通过哈希表(HashTable)表实现的,因此 foreach 遍历数组时是依据元素添加的先后顺序来进行的。如果想按照索引大小遍历,应该使用 for() 循环遍历。

    for() 循环遍历数组

    如果是操作连续键值的数组,也可以采用 for() 循环来遍历数组:
    1. <?php
    2. $arr_age = array(18, 20, 25);
    3. $num = count($arr_age);
    4. for($i = 0; $i < $num; $i++){
    5.     echo $arr_age[$i]."<br />";
    6. }
    7. ?>
    复制代码

    运行例子输出如下:
    1. 18
    2. 20
    3. 25
    复制代码


    提示
    也可以用 list() 和 each() 结合来遍历数组,但测试发现效率不如 foreach() 。
    踩过的脚印
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|数字电视开发网 ( 京ICP备16008897号-5 )

    GMT+8, 2026-5-14 08:13 , Processed in 0.151263 second(s), 27 queries , Gzip On.

    Powered by Discuz! X3.5

    © 2001-2026 Discuz! Team.

    快速回复 返回顶部 返回列表