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

PHP 陣列完整指南:索引、關聯、多維與遍歷技巧

     編輯:PHP 綜合知識

三大陣列類型

類型鍵名對應 C++建立範例
索引陣列 (Indexed)數字 (0 起)vector`$a = ['A','B','C'];`
關聯陣列 (Associative)字串map`$a = ['name'=>'Tom', 'age'=>20];`
多維陣列 (Multidimensional)混合vector`$a = ['dept'=>[['id'=>1,'name'=>'A']]];`

宣告與存取

// 索引陣列
$names = ['Peter', 'Joe', 'Lily'];
echo $names[0]; // Peter

// 關聯陣列
$ages = ['Peter'=>32, 'Joe'=>30, 'Lily'=>28];
echo $ages['Peter']; // 32

// 多維陣列
$families = [
    'Griffin' => ['Peter', 'Lois', 'Megan'],
    'Brown'   => ['Cleveland', 'Loretta', 'Junior']
];
echo $families['Griffin'][2]; // Megan

遍歷方式大全

1. `foreach` (最推薦,支援所有類型)

// 索引陣列
foreach ($names as $v) { echo $v; }

// 關聯陣列
foreach ($ages as $k => $v) { echo "$k: $v"; }

// 多維陣列 (巢狀 foreach)
foreach ($families as $family => $members) {
    echo "$family: ";
    foreach ($members as $m) echo "$m ";
}

2. `for` 迴圈 (僅索引陣列)

for ($i=0, $len=count($names); $i<$len; $i++) {
    echo $names[$i];
}

3. `array_walk` / `array_map` (函數式風格)

array_walk($ages, function($v, $k) { echo "$k=$v
"; }); $upper = array_map('strtoupper', $names); // ['PETER','JOE','LILY']

實用技巧

  • 合併陣列:`$merged = array_merge($a, $b);` (數值鍵重新索引,字串鍵後者覆蓋)。
  • 鍵名/鍵值互換:`$flipped = array_flip($ages);`
  • 檢查鍵名存在:`isset($arr['key'])` 或 `array_key_exists('key', $arr)`。
  • 移除重複值:`$unique = array_unique($arr);`
  • 隨機取樣:`$sample = array_rand($arr, 3);` (回傳鍵名陣列)。

效能提示

  • 大量資料優先用 `foreach`,避免 `for` 重複呼叫 `count()`。
  • 頻繁 `in_array` 查找時,改用 `isset($flip[$val])` (先 `array_flip`),O(1) 查找。
  • PHP 7.0+ 陣列底層優化極大,普通應用無需過度優化。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved