進度條

【PHP】19. for 與 foreach迴圈

【PHP】19. for 與 foreach迴圈

作者: 進度條編輯群 更新日期:

此文章也有影片介紹,可以搭配影片一起學習!

01. for 與 foreach迴圈 (所屬課程)

02. for 與 foreach迴圈 (所屬課程)


以下正式開始文章


在前一堂課我們有提到for迴圈與while迴圈的關聯性,我們先來複習一下for迴圈和while迴圈的執行結果:

 

 

首先我們可以看到上節教到while迴圈寫法會是這樣子,

<?php

$array = ["小明", "老王", "小美"];
$index = 0;

while ( $index < count($array)) {

  echo "姓名:" . $array[$index] . "<br/>";
  $index ++;

}    

 

輸出結果:

 

 

如果用for迴圈寫法的話:

<?php

$array = ["小明", "老王", "小美"];

for( $index=0 ; index < count($array); $index++){
  echo "姓名:" . $array[$index] . "<br/>";
}

?>    

 

輸出結果:

 

 

這時你會發現程式碼行數變少了,但輸出結果是一模一樣的,陣列裡的每個名字都印出來了。


 

for迴圈的寫法

 

 

for迴圈是一個固定的寫法,我們可以看到上述例子的由來,

初始值 → $index=0

條件式 → index<count($array)

更新值 → $index++

指令 → echo "姓名:" . $array[$index] . "<br/>";

 

如果用for迴圈寫法的話:

<?php

$array = ["小明", "老王", "小美"];

for( $index=0 ; index < count($array); $index++){
  echo "姓名:" . $array[$index] . "<br/>";
}

?>  

 

for迴圈有時候也可以加上if else的條件判斷,一切看當時的情況。

 

For迴圈也可以跑出更複雜陣列內容,例如陣列裡可以再放一個陣列,我們可以這樣寫:

 

<?php
  $students = [
    [
      "姓名" => "小明",
      "數學成績" => 90,
    ],
    [
      "姓名" => "老王",
      "數學成績" => 88,
    ],
    [
      "姓名" => "小美",
      "數學成績" => 96,
    ],
  ];

  for ($index = 0; $index < count($students); $index++ ){ 
    $student = $students[$index];
    echo "姓名:" . $student["姓名"]  . "<br/>";
    echo "數學成績:" . $student["數學成績"] . "<br/>";
  }

?>    

 

輸出結果:
 

 

※由於”姓名”、 "數學成績"這些key用中文來寫也可以正常顯示,但有可能會有轉碼的問題,所以我們一般都是用英文來寫。

而因為這樣寫法實在太常見了,所以又衍生了新的語法糖 --- for each迴圈。

 

 

for each迴圈的寫法

 

<?php

   $students = [
    [
      "姓名" => "小明",
      "數學成績" => 90,
    ],
    [
      "姓名" => "老王",
      "數學成績" => 88,
    ],
    [
      "姓名" => "小美",
      "數學成績" => 96,
    ],
  ];

  foreach( $students as $student ) {   // 差在s,複數
    echo "姓名:" . $student["姓名"] . "<br/>";
    echo "數學成績:" . $student["數學成績"] . "<br/>";
  }

 ?>    

 

 

輸出結果:
 

 

 

到這裡我們已經學到了for、for each、while、do while這四種迴圈使用方法,而for each迴圈常取代for迴圈,在蘋果的Swift程式語言裡for迴圈甚至已經被拿掉了,只剩下for each迴圈和類似的語法。
 

 

不過在某些情況下,while迴圈和for迴圈還是有它的用途在,例如你想比對特定的index的話,用for迴圈會比for each迴圈來的方便。他們彼此之間互相取代性非常高,新手用你覺得方便的就可以,等熟悉後再去考慮可讀性與效能會更好些。
 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊