You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何使用foreach循环遍历多维数组(附示例数组)

PHP使用foreach遍历指定二维数组的实现方案

你给出的待遍历数组是典型的二维索引数组:外层以数字为索引,每个索引对应一条完整的业务记录,单条记录以字符串为键存储各字段值,用foreach遍历有两种常用的实现方式,根据业务场景选择即可。

通用嵌套遍历写法

这种写法不限制子数组的结构,不管子数组字段是否统一都能正常遍历,逻辑直白易维护:

  • 第一层foreach遍历最外层数组,拿到每条记录的索引和对应的子数组
  • 第二层foreach遍历单条子数组,拿到每个字段的键名和对应值
<?php
// 定义待遍历的目标数组
$list = [
    [
        'matter' => 1.00,
        'max_matter' => 76.27,
        'batter' => 76961,
        'bat' => 'AVR3333',
        'brand' => 'TATA',
        'price' => 423.73,
        'batterfee' => 500.00,
        'batterid' => 156311038,
        'batterscore' => 18.00
    ],
    [
        'matter' => 1.00,
        'max_matter' => 76.27,
        'batter' => 76961,
        'bat' => 'AVR3333',
        'brand' => 'TATA',
        'price' => 423.73,
        'batterfee' => 500.00,
        'batterid' => 156311038,
        'batterscore' => 18.00
    ]
];

// 开始遍历
foreach ($list as $index => $row) {
    echo "当前处理第" . ($index + 1) . "条记录:<br>";
    foreach ($row as $field => $val) {
        echo "字段[{$field}] => 值:{$val}<br>";
    }
    echo "<br>";
}

固定结构简化写法

如果你明确知道所有子数组的字段固定、结构统一,不需要遍历所有字段,只需要取指定字段做处理,可以省略内层循环,直接在外层通过关联键取值,性能更好代码更简洁:

<?php
foreach ($list as $row) {
    // 按需取需要的字段即可
    echo "品牌:{$row['brand']},型号:{$row['bat']},售价:{$row['price']}<br>";
}

遍历注意事项

如果遍历过程中需要修改原数组的元素值,要在循环的临时变量前加&传引用,否则循环内修改的只是数组元素的临时拷贝,不会改动原数组。引用遍历完成后记得用unset()释放临时引用变量,避免后续逻辑误改数组最后一个元素:

foreach ($list as &$row) {
    // 给每条记录新增折后价字段
    $row['discount_price'] = $row['price'] * 0.85;
}
unset($row); // 释放引用

如果是三维及以上深度的多维数组,可以继续嵌套foreach,或者封装递归遍历函数处理,你当前给出的二维数组只需要一层嵌套就可以满足遍历需求。

内容的提问来源于stack exchange,提问作者tejeswarareddy chaganti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:39:14