PHP遍历数组最常用方法是foreach,适用于所有索引和关联数组,可只取值或同时取键值,引用写法可修改原数组;for仅适用于下标连续的索引数组。
PHP中遍历数组最常用、最直接的方法是 foreach,它专为数组和对象设计,语法简洁且不易出错。除此之外,还有 for、while 结合内部指针函数(如 current()、next())、以及 array_walk() 等方式,适用场景各有不同。
适用于所有索引数组和关联数组,自动处理键和值,无需手动维护下标或指针。
foreach ($arr as $value) { ... }
foreach ($arr as $key => $value) { ... }
foreach ($arr as &$value)
仅适合数字索引、且下标连续的数组。需提前知
道数组长度,靠下标访问元素。
for ($i = 0; $i
count($arr) 提前赋给变量更高效,避免每次循环都计算底层操作方式,灵活性高,但容易出错,一般用于需要控制遍历流程的特殊场景(如中途重置、跳过等)。
reset($arr); while (($value = current($arr)) !== false) { $key = key($arr); next($arr); }
current() 取当前元素,key() 取当前键,next() 移动指针current() 对空数组或指针越界返回 false,但数组含 false 值时需用 === false 严格判断适合对每个元素执行统一操作,强调“处理”而非“控制流程”,代码更函数式。
array_walk($arr, function($value, $key) { ... }); —— 原地操作,可修改原数组(配合引用参数)$new = array_map(function($v) { return $v * 2; }, $arr); —— 返回新数组,不改变原数组基本上就这些。日常开发中 foreach 覆盖 95% 的需求,其余方式按具体逻辑选:要精确控制指针就用 while + 指针函数,要批量转换数据就用 array_map,要边遍历边修改原数组结构可考虑 array_walk。不复杂但容易忽略细节,用对方法能少踩很多坑。