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

PHP 陣列完整入門教程:索引陣列、關聯陣列、多維陣列與常用操作函數

     編輯:PHP 相關知識

陣列是 PHP 最核心、最靈活的資料結構。本文從基礎概念出發,系統講解三種陣列型態的建立、存取、遍歷與實用技巧,並附贈常用操作函數速查表,適合初學者建立完整知識體系。

1. 什麼是陣列?

陣列是有序的 鍵值對 集合。鍵可以是 整數(索引陣列) 或 字串(關聯陣列),值可以是任意型別(含另一個陣列,形成多維陣列)。

2. 索引陣列(數值鍵)

建立方式

<?php
// 自動指派索引(推薦)
$names = ['Peter', 'Quagmire', 'Joe'];

// 手動指派索引
$names[0] = 'Peter';
$names[1] = 'Quagmire';
$names[2] = 'Joe';

// 陣列語法(PHP 5.4+ 短語法)
$names = ['Peter', 'Quagmire', 'Joe'];

存取與輸出

<?php
echo $names[1] . ' and ' . $names[2] . ' are ' . $names[0] . '\'s neighbors';
// 輸出:Quagmire and Joe are Peter's neighbors

3. 關聯陣列(字串鍵)

建立方式

<?php
// 一次宣告
$ages = ['Peter' => 32, 'Quagmire' => 30, 'Joe' => 34];

// 分步賦值
$ages['Peter'] = 32;
$ages['Quagmire'] = 30;
$ages['Joe'] = 34;

存取

<?php
echo 'Peter is ' . $ages['Peter'] . ' years old.'; // Peter is 32 years old.

4. 多維陣列(巢狀陣列)

建立範例:家庭成員

<?php
$families = [
    'Griffin' => ['Peter', 'Lois', 'Megan'],
    'Quagmire' => ['Glenn'],
    'Brown' => ['Cleveland', 'Loretta', 'Junior']
];

// 存取單一值
echo 'Is ' . $families['Griffin'][2] . ' a part of the Griffin family?';
// 輸出:Is Megan a part of the Griffin family?

5. 陣列遍歷的四種方式

方式適用場景範例
foreach (值)僅需值foreach ($arr as $v) { ... }
foreach (鍵 => 值)需鍵與值foreach ($arr as $k => $v) { ... }
for / while + count()需索引控制、反向遍歷for ($i=0; $i<count($arr); $i++)
array_walk / array_map函數式處理、轉換array_map('strtoupper', $arr)

6. 常用操作函數速查

  • 檢查存在:isset($arr['key'])、array_key_exists('key', $arr)、in_array($val, $arr)
  • 新增/刪除:$arr[] = $val、array_push()、unset($arr['key'])、array_splice()
  • 合併/分割:array_merge()、array_chunk()、$a + $b
  • 排序:sort()、rsort()、asort()、ksort()、usort()(自訂比較)
  • 統計/過濾:count()、array_count_values()、array_unique()、array_filter()、array_sum()
  • 鍵值轉換:array_keys()、array_values()、array_flip()、array_combine()

7. 實用技巧

  • 解構賦值(PHP 7.1+):[$a, $b, $c] = $arr; 或 ['x'=>$x, 'y'=>$y] = $arr;
  • 展開運算子(PHP 7.4+):$merged = [...$a, ...$b];
  • 避免在 foreach 中以引用修改後未 unset:foreach ($arr as &$v) { ... } unset($v);
  • 大陣列記憶體優化:考慮 Generator 分批處理、或使用 SplFixedArray(僅整數索引)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved