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

PHP 建立陣列的 5 種核心方法完整圖解與實戰範例

     編輯:PHP 綜合知識

前言

陣列是 PHP 最核心的資料結構。掌握多種建立方式,能寫出更簡潔、效能更優的代碼。本文系統整理 5 大類建立方法,附輸出結果驗證。

1. array() / [] 語法結構(最常用)

索引陣列

<?php
$numbers = [1, 3, 5, 7, 9];
$colors  = ['red', 'blue', 'green'];
$empty   = []; // PHP 5.4+ 短語法
?>

關聯陣列

<?php
$language = [1 => 'PHP', 3 => 'JAVA', 4 => 'C'];
$student  = ['name' => '張三', 'age' => 17];
?>

特點:鍵可為整數或字串,混合使用自動轉型(字串數字鍵會轉為整數)。

2. compact():變數快速轉陣列

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

$result = compact('firstname', 'lastname', 'age');
/*
Array (
    [firstname] => Peter
    [lastname]  => Griffin
    [age]       => 38
)
*/

// 進階:搭配變數名陣列
$name = ['firstname', 'lastname'];
$result = compact($name, 'location', 'age'); // location 不存在會被略過
?>

適用場景:視圖層將多區域變數打包傳給模板引擎(如 Laravel compact('user','posts'))。

3. array_combine():兩陣列合併為鍵值對

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

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

限制:兩陣列長度必須完全相同,否則拋出 Warning 並回傳 false。

4. range():等差數列/字元序列快速生成

<?php
// 數字範圍
range(0, 5);       // [0,1,2,3,4,5]
range(0, 50, 10);  // [0,10,20,30,40,50] 步長 10
range(5, 0);       // [5,4,3,2,1,0] 反序

// 字元範圍
range('a', 'd');   // ['a','b','c','d']
range('Z', 'W');   // ['Z','Y','X','W']
?>

特點:支援字元遞增(ASCII 碼順序),不支援多位元組字元(中文不可用)。

5. array_fill():固定值填充

<?php
// 從索引 2 開始,填 3 個 'Dog'
$a = array_fill(2, 3, 'Dog');
/*
Array (
    [2] => Dog
    [3] => Dog
    [4] => Dog
)
*/

// 多維陣列初始化
$matrix = array_fill(0, 3, array_fill(0, 4, 0)); // 3x4 零矩陣
?>

效能微基準(參考)

方法適用場景相對速度記憶體
[] / array()通用、已知鍵值基準基準
compact()變數打包略慢(符號表查找)略高
array_combine()鍵值分離來源中等中等
range()連續序列極快(C 級實現)低
array_fill()固定值重複極快低

最佳實踐建議

  • 已知鍵值直接用 [] 字面量,可讀性最高
  • 大量連續數字/字元用 range(),避免迴圈
  • 固定值填充用 array_fill(),語意明確
  • 從變數動態建立用 compact(),減少重複鍵名輸入
  • 兩獨立陣列合併用 array_combine(),注意長度檢查

進階:PHP 8.1+ 新語法

<?php
// 解包運算子合併陣列
$defaults = ['host' => 'localhost', 'port' => 3306];
$custom   = ['port' => 3307, 'charset' => 'utf8mb4'];
$config   = [...$defaults, ...$custom];
// ['host' => 'localhost', 'port' => 3307, 'charset' => 'utf8mb4']
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved