【PHP】19. for 與 foreach迴圈
【PHP】19. for 與 foreach迴圈
此文章也有影片介紹,可以搭配影片一起學習!
01. for 與 foreach迴圈 (所屬課程)
在前一堂課我們有提到for迴圈與while迴圈的關聯性,我們先來複習一下for迴圈和while迴圈的執行結果:
首先我們可以看到上節教到while迴圈寫法會是這樣子,
$array = ["小明", "老王", "小美"];
$index = 0;
while ( $index < count($array)) {
echo "姓名:" . $array[$index] . "<br/>";
$index ++;
}
輸出結果:
如果用for迴圈寫法的話:
$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迴圈寫法的話:
$array = ["小明", "老王", "小美"];
for( $index=0 ; index < count($array); $index++){
echo "姓名:" . $array[$index] . "<br/>";
}
?>
for迴圈有時候也可以加上if else的條件判斷,一切看當時的情況。
For迴圈也可以跑出更複雜陣列內容,例如陣列裡可以再放一個陣列,我們可以這樣寫:
$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迴圈的寫法
$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粉絲團按讚喔!!