PHP - 索引陣列



在 PHP 中,陣列元素可以是鍵值對的集合,也可以只包含值。如果陣列僅包含值,則稱之為索引陣列,因為每個元素都由一個遞增的索引標識,從“0”開始。

PHP 中的索引陣列可以透過使用 array() 函式或使用方括號語法建立。

$arr1 = array("a", 10, 9.99, true);
$arr2 = ["a", 10, 9.99, true];

陣列中的每個元素都有一個位置索引,第一個元素位於索引“0”處。var_dump() 函式揭示了這些陣列的結構化資訊,如下所示:

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

我們可以使用索引遍歷陣列,獲取給定索引處的值或就地修改元素的值。

在 PHP 中遍歷索引陣列

任何型別的 PHP 迴圈都可以用來遍歷陣列。如果我們想使用 forwhile 迴圈,我們必須使用 count() 函式找到陣列中的元素數量,並將其值用作計數 forwhile 迴圈的測試條件。

示例

以下程式碼使用 for 迴圈列出索引陣列中的所有元素。

<?php
   $numbers = array(10, 20, 30, 40, 50);

   for ($i=0; $i<count($numbers); $i++){
      echo "numbers[$i] = $numbers[$i] \n";
   }
?>

它將產生以下 輸出

numbers[0] = 10
numbers[1] = 20
numbers[2] = 30
numbers[3] = 40
numbers[4] = 50

您還可以使用 whiledo-while 迴圈遍歷索引陣列。在這裡,我們也需要使用 count() 函式查詢陣列長度。

示例

以下程式碼以相反的順序遍歷給定的索引陣列:

<?php
   $numbers = array(10, 20, 30, 40, 50);
   $i = count($numbers)-1;
   while ($i>=0){
      echo "numbers[$i] = $numbers[$i] \n";
      $i--;
   }
?>

它將產生以下 輸出

numbers[4] = 50
numbers[3] = 40
numbers[2] = 30
numbers[1] = 20
numbers[0] = 10

使用索引訪問陣列元素

您可以使用 array[index] 語法訪問陣列中的任何值。特定索引處的值可以使用新值進行賦值。因此,陣列被就地修改。

示例

以下程式從陣列 $arr1 中獲取值,並以相反的順序將它們放置到 $arr2 中。因此,$arr1 中第 0 個位置的值成為 $arr2 中的最後一個值。

<?php
   $arr1 = array(10, 20, 30, 40, 50);
   $size = count($arr1);

   for ($i=0; $i<$size; $i++){
      $arr2[$size-$i-1] = $arr1[$i];
   }

   for ($i=0; $i<$size; $i++){
      echo "arr1[$i] = $$arr1[$i] arr2[$i] = $$arr2[$i] \n";
   }
?>

它將產生以下 輸出

arr1[0] = $10 arr2[0] = $50
arr1[1] = $20 arr2[1] = $40
arr1[2] = $30 arr2[2] = $30
arr1[3] = $40 arr2[3] = $20
arr1[4] = $50 arr2[4] = $10

使用“foreach”迴圈遍歷索引陣列

您還可以使用 foreach 迴圈迭代索引陣列。請檢視以下 示例

<?php
   $arr1 = [10, 20, 30, 40, 50];
   foreach ($arr1 as $val){
      echo "$val \n";
   } 
?>

它將產生以下 輸出

10 
20 
30 
40 
50

請注意,PHP 在內部將索引陣列視為關聯陣列,並將索引視為鍵。可以透過陣列的 var_dump() 輸出驗證此事實。

示例

我們可以使用 foreach 語法將索引陣列的每個元素解包到鍵和值變數中:

<?php
   $arr1 = [10, 20, 30, 40, 50];
   foreach ($arr1 as $key => $val){
      echo "arr1[$key] = $val \n";
   }
?>

它將產生以下 輸出

arr1[0] = 10
arr1[1] = 20
arr1[2] = 30
arr1[3] = 40
arr1[4] = 50

在 PHP 中,陣列可以是僅包含值或鍵值對的混合。PHP 僅為沒有鍵的值分配索引。

示例

在此示例中,PHP 為數字分配遞增索引,跳過其中出現的鍵值對。

<?php
   $arr1 = [10, 20, 
         "vals" => ["ten", "twenty"],
         30, 40, 50];

   var_dump($arr1);
?>

它將產生以下 輸出

array(6) {
  [0]=>
  int(10)
  [1]=>
  int(20)
  ["vals"]=>
  array(2) {
    [0]=>
    string(3) "ten"
    [1]=>
    string(6) "twenty"
  }
  [2]=>
  int(30)
  [3]=>
  int(40)
  [4]=>
  int(50)
}
廣告