php实现遍历
遍历数组
使用 foreach 循环可以高效遍历数组,适用于索引数组和关联数组:
$array = [1, 2, 3, 'a' => 'apple'];
foreach ($array as $value) {
echo $value . "\n";
}
// 输出:1 2 3 apple
需要键名时:
foreach ($array as $key => $value) {
echo "$key: $value\n";
}
遍历对象
通过 foreach 遍历对象的可见属性(public):

class Example {
public $prop1 = 'value1';
protected $prop2 = 'value2'; // 不可遍历
}
$obj = new Example();
foreach ($obj as $key => $value) {
echo "$key: $value\n"; // 输出:prop1: value1
}
使用 for 循环遍历索引数组
适用于连续数字索引的数组:
$array = [10, 20, 30];
for ($i = 0; $i < count($array); $i++) {
echo $array[$i] . "\n";
}
遍历目录文件
结合 scandir 和循环遍历目录内容:

$dir = '/path/to/directory';
$files = scandir($dir);
foreach ($files as $file) {
if ($file != '.' && $file != '..') {
echo $file . "\n";
}
}
使用 while 和 each 遍历数组(PHP 7.2+已弃用)
PHP 7.2 之前可用的方法(不推荐新代码使用):
$array = ['a' => 1, 'b' => 2];
reset($array); // 重置指针
while (list($key, $value) = each($array)) {
echo "$key: $value\n";
}
迭代器遍历(高级)
通过 ArrayIterator 实现更灵活的遍历:
$iterator = new ArrayIterator(['x', 'y', 'z']);
while ($iterator->valid()) {
echo $iterator->current() . "\n";
$iterator->next();
}
递归遍历多维数组
使用递归处理嵌套结构:
function traverseArray($array) {
foreach ($array as $key => $value) {
if (is_array($value)) {
traverseArray($value);
} else {
echo "$key: $value\n";
}
}
}
traverseArray([1, [2, 3], 'a' => ['b' => 'c']]);






