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

PHP 陣列賦值與操作完整指南:建立、指派、銷毀與進階技巧

     編輯:PHP 相關知識

陣列是 PHP 中最常用、最靈活的資料結構,可視為記憶體中的「小型資料庫」,支援多種資料型別混存,能大幅減少 I/O 與資料庫頻繁存取,提升效能。本文系統整理陣列的建立、賦值、遍歷、銷毀等核心操作,並補充實務常見陷阱與進階技巧。

一、建立陣列的多種方式

1. 短語法(PHP 5.4+ 推薦)

$fruits = ['apple', 'banana', 'orange'];
$user   = ['name' => 'John', 'age' => 30, 'active' => true];

2. array() 語言結構(傳統寫法)

$colors = array('red', 'green', 'blue');
$config = array('host' => 'localhost', 'port' => 3306);

3. 索引陣列 vs 關聯陣列

  • 索引陣列:鍵為數字,預設從 0 遞增。
  • 關聯陣列:鍵為字串,語義化存取。
  • PHP 內部統一以有序映射實作,兩者可混合共存。

4. 動態賦值(不指定鍵)

$arr = [];
$arr[] = 'first';  // 鍵 0
$arr[] = 'second'; // 鍵 1
$arr['key'] = 'value'; // 指定字串鍵

二、陣列存取與遍歷

1. 直接存取

echo $fruits[0];      // apple
echo $user['name'];   // John

2. foreach 遍歷(最常用)

// 只需值
foreach ($fruits as $fruit) {
    echo $fruit . PHP_EOL;
}

// 需要鍵值
foreach ($user as $key => $value) {
    echo "$key: $value" . PHP_EOL;
}

// 參考傳遞修改原陣列
foreach ($data as &$item) {
    $item = strtoupper($item);
}
unset($item); // 解除參考,避免後續誤用

3. 其它遍歷函數

  • array_keys()、array_values()、array_flip()
  • array_map()、array_filter()、array_reduce() 函數式風格
  • list() 解構:foreach ($pairs as [$a, $b])(PHP 7.1+)

三、陣列修改與銷毀

1. 修改元素

$arr[1] = 'updated';
$arr['new_key'] = 'new value';

2. 刪除元素 / 整個陣列

unset($arr[1]);     // 刪除指定鍵,索引不會自動重排
unset($arr);        // 銷毀整個變數

注意:unset() 刪除後,數字索引不會自動重新排序,若需連續索引可用 array_values($arr) 重建。

3. 實用檢查函數

  • isset($arr['key']):鍵存在且非 null
  • array_key_exists('key', $arr):鍵存在(含 null 值)
  • in_array($value, $arr):值存在(嚴格模式傳 true)
  • count($arr) / sizeof($arr):元素個數

四、常見陷阱與最佳實踐

陷阱說明建議
字串當陣列存取$str[0] 可取字元,但語意混淆字串操作用 mb_substr()、str_split()
foreach 參考殘留迴圈後 $item 仍為參考,後續賦值污染陣列迴圈結束立即 unset($item)
大量資料記憶體耗盡陣列載入全量資料使用 Generator (yield) 或分頁處理
多維陣列排序usort / array_multisort 易寫錯善用 arrow function (fn) 簡化回呼
鍵名大小寫敏感$arr['Key'] != $arr['key']統一命名規範,或用 array_change_key_case()

五、進階技巧速查

  • 合併陣列:array_merge()(數字鍵重排)、+ 運算子(保留第一個陣列鍵值)
  • 差集/交集:array_diff()、array_intersect()、array_diff_key()
  • 隨機取樣:array_rand($arr, 3)
  • 陣列轉 JSON:json_encode($arr, JSON_UNESCAPED_UNICODE)
  • 解構賦值:[$a, $b, $c] = $arr;(PHP 7.1+)
  • 展開運算子:[...$arr1, ...$arr2](PHP 7.4+)

熟練掌握陣列操作,是寫出高效、可維護 PHP 程式的基石。建議開發者養成「先定義型別結構、再操作資料」的習慣,並善用 IDE 靜態分析與單元測試守護陣列邏輯正確性。

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