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
相关产品推荐
相关产品推荐

