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

PHP foreach() 遍歷數組完全指南:語法、變體與進階特性

     編輯:PHP 綜合知識

foreach 是 PHP 4 引入的專用數組遍歷結構,語法簡潔、功能強大,是處理數組的首選方式。本文系統梳理雙重語法、對象遍歷、指針行為等核心知識點。

兩種基本語法

// 1. 僅獲取值
foreach ($array as $value) {
    // 處理 $value
}

// 2. 同時獲取鍵名和值
foreach ($array as $key => $value) {
    // 處理 $key 和 $value
}

核心特性

  • 自動重置指針:開始前自動指向第一個元素,無需 reset()
  • 操作拷貝:默認按值遍歷,修改 $value 不影響原數組
  • 引用遍歷:&$value 可修改原數組(PHP 5+)
  • 對象遍歷:PHP 5+ 支持遍歷實現 Traversable 接口的對象

指針副作用與注意事項

除非數組被引用,foreach 操作的是數組拷貝。循環中或循環後不要依賴數組指針位置,除非顯式 reset()。

引用遍歷示例

$arr = [1, 2, 3, 4];
foreach ($arr as &$value) {
    $value *= 2;
}
// $arr = [2, 4, 6, 8]

// 限制:僅適用於可引用的變量
foreach (array(1,2,3) as &$v) { } // Fatal Error

進階技巧

嵌套遍歷多維數組

$matrix = [
    [1, 2, 3],
    [4, 5, 6]
];
foreach ($matrix as $row) {
    foreach ($row as $cell) {
        echo $cell . ' ';
    }
    echo "\n";
}

遍歷時安全刪除元素

$arr = [1, 2, 3, 4, 5];
foreach ($arr as $key => $value) {
    if ($value % 2 === 0) {
        unset($arr[$key]);  // 安全:操作的是拷貝
    }
}

性能提示

  • 大數組優先考慮引用遍歷減少內存拷貝
  • 只讀場景按值遍歷更安全
  • 避免在循環中調用 count(),預先存儲長度
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved