首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 陣列遍歷完全指南:for、foreach、list/each、array_walk 實戰對比

     編輯:PHP 相關知識

1. 連續索引陣列:for 迴圈

$subject = ['maths', 'english', 'physics'];
$count = count($subject);
for ($i = 0; $i < $count; ++$i) {
    echo $subject[$i] . "\n";
}
// 索引不從 0 開始時
$subject = [3 => 'maths', 'english', 'physics'];
$count = count($subject) + 3;
for ($i = 3; $i < $count; ++$i) {
    echo $subject[$i] . "\n";
}

2. 關聯陣列:foreach(推薦)

$subject = ['m' => 'maths', 'e' => 'english', 'p' => 'physics'];
foreach ($subject as $key => $value) {
    echo "$key is $value\n";
}

3. list() + each() 經典寫法

reset($subject); // 重置指標
while (list($key, $value) = each($subject)) {
    echo "$key is $value\n";
}

4. array_walk() 回調處理

$subject = ['maths', 'english', 'physics'];
function printElement($element) {
    echo $element . "\n";
}
array_walk($subject, 'printElement');
// PHP 5.3+ 匿名函式
array_walk($subject, function($v) { echo $v . "\n"; });

效能與行為差異總結

方法複製陣列影響內部指標適用場景
foreach是(淺拷貝)否通用、唯讀遍歷、鍵值同時需要
list/each否是(指標移至末尾)需操作指標、舊代碼維護
array_walk否否需自訂處理邏輯、就地修改值(傳參考 &$v)
for否否連續索引、需控制步長/逆序

最佳實踐建議

  • 優先使用 foreach:語意清晰、效能佳、不干擾指標
  • 需修改原陣列值:foreach ($arr as &$v) { $v = ...; } unset($v);
  • 大型陣列考慮 Generator (yield) 分批處理
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved