最推荐php数组遍历方式是foreach,它语法简洁、兼容索引与关联数组、性能好且安全;for适用于连续数字索引,array_walk适合带回调的批量处理,多维数组用嵌套foreach或array_walk_recursive。

PHP 数组遍历最常用、最推荐的写法是 foreach,它语法简洁、自动适配索引数组和关联数组,不易出错且性能好。其他方法如 for 和 array_walk 各有适用场景,但日常开发中 90% 以上情况用 foreach 就够了。
foreach:最安全又顺手的遍历方式
它专为数组设计,无需关心键是否为数字或字符串,也不用手动维护索引。
- 只取值:
foreach ($arr as $value) { echo $value; } - 同时取键和值:
foreach ($arr as $key => $value) { echo "$key: $value"; } - 要修改原数组元素?加引用符号
foreach ($arr as &$value) { $value = strtoupper($value); } unset($value);(注意最后 unset 引用,避免意外覆盖)
for 循环:适合纯数字索引且需精确控制索引时
只适用于连续数字键的索引数组,比如 [0=>'a', 1=>'b', 2=>'c']。不能直接用于 ['name'=>'张三', 'age'=>25] 这类关联数组。
- 先用
count($arr)获取长度 - 再用
for ($i = 0; $i 遍历 - 访问元素写成
$arr[$i],不能写成$arr[$i]['name']除非你确认它是二维结构
array_walk:适合对每个元素执行统一操作
它不是循环语句,而是函数式方法,常用于格式化、验证、日志记录等“副作用”操作。
- 必须传一个回调函数,例如:
array_walk($arr, function($val, $key) { echo "$key => $val"; }); - 支持第三个参数传额外变量,比如:
array_walk($arr, 'my_handler', ['prefix' => 'ID']); - 不能直接修改原数组的键名,但可通过引用修改值:
array_walk($arr, function(&$val) { $val *= 2; });
多维数组怎么遍历?嵌套 foreach 最清晰
比如二维数组 [ ['name'=>'A','score'=>85], ['name'=>'B','score'=>92] ],就用两层 foreach:
- 外层遍历行:
foreach ($students as $student) { ... } - 内层遍历字段:
foreach ($student as $field => $data) { echo "$field: $data"; } - 若结构更深(三层及以上),优先考虑
array_walk_recursive()提取所有叶子值,或写递归函数处理特定逻辑
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











