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

PHP 關聯陣列遍歷:foreach 最佳實務與進階技巧

     編輯:PHP 相關知識

PHP 中遍歷關聯陣列(字串鍵)最標準、效能最好的方式是 foreach,支援同時取得鍵與值,且可參考傳遞修改原陣列。

基本語法

<?php
$ages = ['zhangshan' => 14, 'lisi' => 15, 'sharejs' => 16];

foreach ($ages as $name => $age) {
    echo "$name = $age\n";
}
// 輸出:
// zhangshan = 14
// lisi = 15
// sharejs = 16
?>

進階用法

參考傳遞修改原值

foreach ($ages as $name => &$age) {
    $age++; // 直接修改原陣列
}
unset($age); // 重要:解除參考,避免後續迴圈污染
print_r($ages); // 所有年齡 +1

僅需值(忽略鍵)

foreach ($ages as $age) {
    // ...
}

搭配 array_keys / array_values

$names = array_keys($ages);
$values = array_values($ages);

效能與替代方案比較

方法適用場景效能備註
foreach ($arr as $k => $v)標準遍歷、需鍵值最快內部指標自動重置
foreach ($arr as &$v)需修改原值快必須 unset($v)
while (list($k,$v)=each($arr))舊版相容較慢PHP 7.2 棄用,8.0 移除
for ($i=0; $i數字索引陣列中等關聯陣列不適用
array_walk($arr, fn($v,$k)=>...)函式式處理略慢可攜帶 userdata

常見錯誤避坑

  • 迴圈中 unset 當前元素:會導致內部指標錯位,建議先收集要刪除的鍵,迴圈後再 unset($arr[$key])。
  • 參考殘留:foreach (... as &$v) 後未 unset($v),後續同變名迴圈會意外修改最後一個元素。
  • 多維陣列遞迴:需自行實作遞迴函式或用 RecursiveArrayIterator。

掌握 foreach 細節,是寫出高效、無 Bug PHP 陣列處理程式的基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved