PHP - 陣列



陣列是一種資料結構,它在一個變數中儲存一個或多個具有某種關係的資料值。例如,如果您想儲存一個班級中 10 個學生的成績,那麼與其定義 10 個不同的變數,不如定義一個長度為 10 的陣列更容易。

PHP 中的陣列與 C 中的陣列略有不同,因為 PHP 是一種動態型別語言,而 C 是一種靜態型別語言。

  • PHP 中的陣列是有序對映,它將值與鍵關聯。

  • PHP 陣列可用於實現不同的資料結構,例如堆疊、佇列、列表(向量)、雜湊表、字典等。

  • 陣列元素的值部分可以是其他陣列。這一事實可以用來實現樹形資料結構和多維陣列。

在 PHP 中宣告陣列有兩種方法。一種是使用內建的 array() 函式,另一種是使用較短的語法,其中陣列元素放在方括號內。

array() 函式

內建的 array() 函式使用給定的引數並返回一個數組型別的物件。一個或多個用逗號分隔的引數是陣列中的元素。

array(mixed ...$values): array

括號中的每個值可以是單個值(可以是數字、字串、任何物件甚至是另一個數組),也可以是鍵值對。“=>” 符號表示鍵與其值之間的關聯。

示例

$arr1 = array(10, "asd", 1.55, true);
$arr2 = array("one"=>1, "two"=>2, "three"=>3);
$arr3 = array(
   array(10, 20, 30),
   array("Ten", "Twenty", "Thirty"),
   array("physics"=>70, "chemistry"=>80, "maths"=>90)
);

使用方括號 [ ]

除了 array() 函式外,還可以將用逗號分隔的陣列元素放在方括號內來宣告陣列物件。在這種情況下,元素也可以是單個值或字串或另一個數組。

$arr1 = [10, "asd", 1.55, true];
$arr2 = ["one"=>1, "two"=>2, "three"=>3];
$arr3 = [ [10, 20, 30],
   ["Ten", "Twenty", "Thirty"],
   ["physics"=>70, "chemistry"=>80, "maths"=>90] ];

PHP 中的陣列型別

有三種不同的陣列,每個陣列值都使用稱為陣列索引的 ID 來訪問。

  • 索引陣列 - 只包含值的陣列稱為索引陣列。每個值都由從“0”開始的位置索引標識。值以線性方式儲存和訪問。

  • 關聯陣列 - 如果陣列是鍵值對的集合,則稱為關聯陣列。對中的鍵元件可以是數字或字串,而值部分可以是任何型別。關聯陣列根據鍵值而不是嚴格的線性索引順序儲存元素值。

  • 多維陣列 - 如果索引陣列或關聯陣列中的每個值本身就是一個數組,則稱為多維陣列。值使用多個索引訪問。

注意 - 函式參考中提供了內建的陣列函式 PHP 陣列函式

需要注意的是,PHP 內部將上述任何型別都視為關聯陣列本身。對於索引陣列,其中每個值都有索引,索引本身就是它的鍵。var_dump() 函式揭示了這一事實。

示例

在此示例中,arr1 是一個索引陣列。但是,顯示任何物件結構化資訊的 var_dump() 顯示每個值都具有其索引作為其鍵。

<?php
   $arr1 = [10, "asd", 1.55, true];
   var_dump($arr1);
?>

它將產生以下輸出 -

array(4) {
  [0]=>
  int(10)
  [1]=>
  string(3) "asd"
  [2]=>
  float(1.55)
  [3]=>
  bool(true)
}

示例

相同的原理適用於多維索引陣列,其中陣列中的每個值都是另一個數組。

<?php
   $arr1 = [
      [10, 20, 30], 
      ["Ten", "Twenty", "Thirty"],
      [1.1, 2.2, 3.3]
   ];

   var_dump($arr1);
?>

它將產生以下輸出 -

array(3) {
  [0]=>
  array(3) {
    [0]=>
    int(10)
    [1]=>
    int(20)
    [2]=>
    int(30)
  }
  [1]=>
  array(3) {
    [0]=>
    string(3) "Ten"
    [1]=>
    string(6) "Twenty"
    [2]=>
    string(6) "Thirty"
  }
  [2]=>
  array(3) {
    [0]=>
    float(1.1)
    [1]=>
    float(2.2)
    [2]=>
    float(3.3)
  }
}

訪問陣列元素

要訪問給定陣列中的任何元素,可以使用 array[key] 語法。

示例

對於索引陣列,將索引放在方括號內,因為索引本身就是鍵。

<?php
   $arr1 = [10, 20, 30];
   $arr2 = array("one"=>1, "two"=>2, "three"=>3);

   var_dump($arr1[1]);
   var_dump($arr2["two"]);
?>

它將產生以下輸出 -

int(20)
int(2)

我們將在後續章節中更詳細地探討 PHP 陣列的型別。

廣告