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

PHP foreach 兩種語法完整比較與應用場景

     編輯:PHP 相關知識

語法一:僅取值

foreach ($array as $value) {
    // 處理 $value
}

適用情境:只需要陣列值,不關心索引/鍵名。
內部行為:每次迴圈將當前元素值指派給 $value,陣列指標自動前移。

語法二:取得鍵值與值

foreach ($array as $key => $value) {
    // 可同時使用 $key 與 $value
}

適用情境:需要索引(數字鍵)或關聯鍵名(字串鍵)。
差異:額外將當前元素的鍵名指派給 $key 變數。

實例比較

索引陣列

$colors = ['紅', '綠', '藍'];

foreach ($colors as $color) {
    echo "$color
"; // 紅、綠、藍 } foreach ($colors as $i => $color) { echo "$i: $color
"; // 0: 紅、1: 綠、2: 藍 }

關聯陣列

$book = [
    'isbn' => '978-7-115-12345-6',
    'title' => 'PHP 進階程式設計',
    'price' => 89
];

foreach ($book as $field => $val) {
    echo "$field => $val
"; } // 輸出: // isbn => 978-7-115-12345-6 // title => PHP 進階程式設計 // price => 89

效能與記憶體注意事項

  • foreach 操作的是陣列副本(PHP 7 起為複製引用),修改 $value 不影響原陣列
  • 若需修改原陣列值,請使用引用:foreach ($arr as &$v) { $v *= 2; } unset($v);
  • 大型陣列建議改用 array_walk() 或產生器 yield 節省記憶體

常見錯誤

// 錯誤:以為 $key 是計數器
foreach ($arr as $key => $val) {
    echo $key; // 實際是陣列索引,不一定從 0 開始連續
}

// 正確:需連續編號時
$counter = 1;
foreach ($arr as $val) {
    echo $counter++;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved