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

PHP 建立陣列的五種核心方法與實戰範例

     編輯:PHP 相關知識

前言

陣列是 PHP 最核心的資料結構,掌握多樣的建立方式能寫出更簡潔、高效的代碼。本文整理五大建立方法,附上實戰範例與適用場景。

方法一:array() / [] 語法結構(最常用)

PHP 5.4+ 支援短陣列語法 [],語意清晰、效能最佳。

<?php
// 索引陣列
$numbers = [1, 3, 5, 7, 9];
$colors  = ['red', 'blue', 'green'];

// 關聯陣列
$language = [1 => 'PHP', 3 => 'JAVA', 4 => 'C'];
$student  = ['name' => '張三', 'age' => 17];

// 空陣列
$result = [];

// 多維陣列
$users = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
];
?>

方法二:compact() 將變數打包成關聯陣列

適用於「已有同名變數需組裝成陣列」的場景(如 MVC Controller 傳遞變數給 View)。

<?php
$firstname = 'Peter';
$lastname  = 'Griffin';
$age       = 38;

// 方式 1:列出變數名字串
$arr1 = compact('firstname', 'lastname', 'age');
// ['firstname'=>'Peter', 'lastname'=>'Griffin', 'age'=>38]

// 方式 2:混合陣列與字串(不存在的變數會被忽略)
$name = ['firstname', 'lastname'];
$arr2 = compact($name, 'location', 'age'); // location 不存在被略過
// ['firstname'=>'Peter', 'lastname'=>'Griffin', 'age'=>38]
?>

方法三:array_combine() 合併鍵陣列與值陣列

適用於「從兩個平行陣列建立關聯對應」,如 CSV 欄位名與資料列、資料庫欄位與值。

<?php
$keys   = ['a', 'b', 'c', 'd'];
$values = ['Cat', 'Dog', 'Horse', 'Cow'];

$combined = array_combine($keys, $values);
// ['a'=>'Cat', 'b'=>'Dog', 'c'=>'Horse', 'd'=>'Cow']

// ⚠️ 兩陣列長度必須相同,否則拋出 Warning 並返回 false
?>

方法四:range() 產生等差數列/字元序列

快速建立數字範圍、字母序列,支援步長控制。

<?php
// 數字 0~5
range(0, 5);       // [0,1,2,3,4,5]

// 數字 0~50 步長 10
range(0, 50, 10);  // [0,10,20,30,40,50]

// 字母 a~d
range('a', 'd');   // ['a','b','c','d']

// 反序
range(5, 0);       // [5,4,3,2,1,0]

// 實戰:產生下拉選單年份選項
$years = array_combine(range(2024, 1990), range(2024, 1990));
// [2024=>2024, 2023=>2023, ..., 1990=>1990]
?>

方法五:array_fill() 以固定值填充陣列

適用於初始化固定長度陣列、建立預設值佔位、單元測試資料準備。

<?php
// 從索引 2 開始,3 個元素,值為 'Dog'
array_fill(2, 3, 'Dog');
// [2=>'Dog', 3=>'Dog', 4=>'Dog']

// 實戰:初始化 100 個預設為 0 的計數器
$counters = array_fill(0, 100, 0);

// 實戰:建立 5x5 棋盤預設值
$board = array_fill(0, 5, array_fill(0, 5, null));
?>

進階補充:其他實用建立函數

函數用途範例
array_keys()取得陣列所有鍵名array_keys($arr)
array_values()重設數字索引(取值陣列)array_values($arr)
array_flip()交換鍵值array_flip(['a'=>1, 'b'=>2]) → [1=>'a', 2=>'b']
array_merge()合併多個陣列(數字鍵重設)array_merge([1,2], [3,4]) → [1,2,3,4]
array_fill_keys()指定鍵名陣列填充同一值array_fill_keys(['a','b','c'], 0) → ['a'=>0,'b'=>0,'c'=>0]

效能與選擇建議

  • 一般宣告: 優先使用 [] 語法,語意最清晰、OPcache 優化最好。
  • 動態組裝: 變數→陣列用 compact(),平行陣列→關聯用 array_combine()。
  • 批量初始化: 固定值用 array_fill(),序列用 range()。
  • 大量資料: 避免迴圈中反覆 [] 追加,預先 array_fill() 再賦值,或使用 Generator 產生器逐筆產出。

總結

五種核心建立方法各有專長:[] 通用宣告、compact() 變數打包、array_combine() 雙陣列合併、range() 序列產生、array_fill() 固定值填充。熟練運用並搭配進階輔助函數,能讓陣列操作代碼更具表達力與效能。

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