PHP - foreach 迴圈



PHP 中的 foreach 結構專門用於迭代陣列。如果嘗試將其用於不同資料型別的變數,PHP 會引發錯誤。

PHP 中的 foreach 迴圈可以用於索引陣列和關聯陣列。有兩種型別的用法語法可用 -

foreach (array as $value) {
   statements
}

當您想要迭代索引陣列時,上述方法很有用。下面的語法更適合關聯陣列。

foreach (array as $key => $value) {
   statements
}

但是,這兩種方法都適用於索引陣列,因為陣列中專案的索引也充當鍵。

使用 "foreach" 迴圈遍歷索引陣列

上面第一種語法型別在 foreach 關鍵字前面顯示了一個括號。然後是待遍歷陣列的名稱,後跟 "as" 關鍵字,然後是一個變數。

當第一次迭代開始時,陣列中的第一個元素被分配給變數。迴圈塊結束後,變數取下一個元素的值,並重復迴圈體中的語句,直到陣列中的元素被耗盡。

foreach 迴圈的一個典型用法如下所示 -

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

示例

PHP 在 array_search() 中提供了一個非常有用的函式,它返回給定值的鍵。由於索引本身是索引陣列中的鍵,因此每個 $val 的 array_search() 返回每個值的從零開始的索引。以下程式碼演示了它的工作原理 -

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

   foreach ($arr as $val) {
      $index = array_search($val, $arr);
      echo "Element at index $index is $val \n";
   }
?>

它將產生以下 輸出 -

Element at index 0 is 10
Element at index 1 is 20
Element at index 2 is 30
Element at index 3 is 40
Element at index 4 is 50

示例

foreach 語法的第二個變體將陣列中的每個元素解包到兩個變數中:一個用於 ,一個用於

由於索引本身在索引陣列的情況下充當鍵,因此 $k 變數依次獲取陣列中每個元素的遞增索引。

<?php
   $arr = array(10, 20, 30, 40, 50);
   foreach ($arr as $k=>$v) {
      echo "Key: $k => Val: $v \n";
   }
?>

它將產生以下 輸出 -

Key: 0 => Val: 10
Key: 1 => Val: 20
Key: 2 => Val: 30
Key: 3 => Val: 40
Key: 4 => Val: 50

使用 "foreach" 迴圈迭代關聯陣列

關聯陣列是鍵值對的集合。要遍歷關聯陣列,可以使用 foreach 語法的第二個變體。陣列中的每個元素都解包到兩個變數中,每個變數都獲取鍵及其值。

示例

這是一個示例,其中使用 foreach 迴圈遍歷州及其各自首府的陣列。

<?php
   $capitals = array(
      "Maharashtra"=>"Mumbai", "Telangana"=>"Hyderabad", 
      "UP"=>"Lucknow", "Tamilnadu"=>"Chennai"
   );

   foreach ($capitals as $k=>$v) {
      echo "Capital of $k is $v \n";
   }
?>

它將產生以下 輸出 -

Capital of Maharashtra is Mumbai
Capital of Telangana is Hyderabad
Capital of UP is Lucknow
Capital of Tamilnadu is Chennai

但是,您仍然可以使用 foreach 語句的第一種版本,其中陣列中每個鍵值對中的值僅儲存在變數中。然後,我們使用之前使用過的 array_search() 函式獲取對應於該值的鍵。

<?php
   $capitals = array(
      "Maharashtra"=>"Mumbai", "Telangana"=>"Hyderabad", 
      "UP"=>"Lucknow", "Tamilnadu"=>"Chennai"
   );

   foreach ($capitals as $pair) {
      $cap = array_search($pair, $capitals);         
      echo "Capital of $cap is $capitals[$cap] \n";
   }
?>

使用 "foreach" 迴圈迭代二維陣列

可以在 PHP 中宣告多維陣列,其中陣列中的每個元素本身就是另一個數組。請注意,外部陣列和子陣列都可以是索引陣列或關聯陣列。

在下面的示例中,我們有一個二維陣列,可以稱為陣列或陣列。我們需要巢狀迴圈來遍歷巢狀的陣列結構,如下所示 -

<?php
   $twoD = array(
      array(1,2,3,4),
      array("one", "two", "three", "four"),
      array("one"=>1, "two"=>2, "three"=>3)
   );

   foreach ($twoD as $idx=>$arr) {
      echo "Array no $idx \n";
      foreach ($arr as $k=>$v) {
         echo "$k => $v" . "\n";
      }
      echo "\n";
   }
?>

它將產生以下 輸出 -

Array no 0
0 => 1
1 => 2
2 => 3
3 => 4

Array no 1
0 => one
1 => two
2 => three
3 => four

Array no 2
one => 1
two => 2
three => 3
廣告