iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
Software Development

PHP 語法通關系列 第 13

Day13 流程控制之條件判斷

了解流程控制

PHP程式設計中,很重要的環節就是條件判斷!
條件判斷能根據不同的情況執行不同的程式碼或進行不同的流程。

流程控制:
程序執行的順序就是流程。
程式一般來說,是由上而下一行一行的執行,但實際上根據邏輯,常常會需要判斷某些狀況與條件,並且在某些條件下時,去執行相對應的程式碼,這就是所謂的流程控制

在PHP中,流程控制的語法有分為以下兩種:

  1. 條件判斷
  2. 迴圈
  • 流程的分類

    • 順序結構- 程序自上而下的執行過程既是順序結構,所有的程序默認都是順序結構
    • 分支結構 (選擇結構)
      • 程序在執行的過程中,往往要根據不同的運行結果做出不同的選擇,或者忽略部分代碼的執行,這種執行結構就叫分支結構。
    • 循環結構
      • 簡單的說就是讓電腦重複執行一件事或者說重複執行一段代碼。
  • 分支結構分類

    • 單項分支結構
      • if
    • 雙項分支結構
      • if...else
    • 多項分支結構
      • if... elseif*n...else
    • 巢狀分支結構
      • if 內又包含if

但其實不用搞那麼複雜~~~ 直接使用看實例就是最好的學習方式,主要是會用,不過在進入流程控制之前,要先分清楚'='、'=='、'==='這三者的差別。
一個等號:是賦值運算子
二個等號:是關係運算子
三個等號:是關係運算子(嚴格比較版)

所以~~~
=:賦值
==:比較兩者是否相等
===:比較兩者是否相等(連類型也要相等)

條件判斷

PHP程式設計中,很重要的環節就是條件判斷。條件判斷才能根據不同的情況執行不同的程式碼或進行不同的流程。
大部分的分支和迴圈結構都是由布林值(boolean)判斷式來控制的,也就是true或false。

  • if...elseif...else
    if...elseif...else是一種「多重條件、多重判斷」的條件判斷式
    if的中文是「如果...就...」,邏輯上的說法「如果A條件成立(true),就做B事情」
    PHP語法表示:
<?php
    //我們給程式一些條件,條件成立的話,就執行一些要做的事情

    if(A條件true){
        做B事情(A條件成立要做的事);
    }
?>

養成好習慣,if(條件判斷){} 要記得加括號,其實後面只有一句(一行程式碼)可以不加,但如果加了會讓人更易明白你程式碼的範圍,要修改也會更加方便~~~

if()內可以有不只一個條件,也就是可以有「多重條件」在2個條件都成立的情況下,才會執行對應要做的事情,並且可以藉由elseif進行更多的條件判斷,以及最後條件否(false),執行else~

<?php
$ages = 20;
$is_driver = false;
if ($ages > 20 && $is_driver) {
    echo '你就可以開車';
} elseif ($ages > 18 || $is_driver) {
    echo '你就可以上車';
} else {
    echo '乖~~~ 當個乖寶寶';
}

這邊也來簡單一個巢狀分支結構好了

<?php
//定義三道門
	$oneDoor = true;
	$twoDoor = true;
	$threeDoor = true;

	echo '疫情不能出門,好無聊,化身馬鈴薯!!! <br/>';
	if($oneDoor == true){
		//房間開門
		echo '誒呦誒呦~~~~~~~好高興啊,終於可以出去走走了<br/>';
		echo '走走走,到了家裡大門口<br/>';
		//判斷家裡大門是否已開
		if($twoDoor == true){
			//開門
			echo '家裡大門已開,大搖大擺走出來,馬鈴薯變身成小調皮<br/>';
			echo '走走走,走到了健身房門口<br/>';
			//判斷健身房門口是否開門
			if($threeDoor == true){
				echo '健身房門口已開,喔喔喔喔~ 我終於可以到健身房走走!<br/>';
			}else{
				echo 'QAQ 我要再次變身馬鈴薯了喔...<br/>';
			}
		}else{
			echo '芝麻開門<br/>';
		}
	}else{
		echo '在家看動漫好開心~~~ <br/>';
		echo '但都追完了,求番推薦ㄚㄚ!! 疫情快結束讓我出門走走吧  <br/>';
	}
  • switch
    switch 有點類似 if...else 的效果,但switch的特點是針對「一個變數的值」進行多重判斷,基本上switch能做到的,if...elseif...else也能做到,但是switch程式碼可讀性相對較清楚簡潔一些些,使用看可以看個人的喜好,或是看易讀性 :eyes:

基本的語法格式:

<?php
    switch(變數){
        case 值1:
            變數==值1時執行這裡;
            break;
        case 值2:
            變數==值2時執行這裡;
            break;
        case 值3:
            變數==值3時執行這裡;
            break;
        default:
            上面的都不吻合,那就執行這裏;
    }
?>

switch...case的分支結構可以同時執行多條分支,因此==別忘記加braek唷!==,不然程式會持續執行下去wwwww
switch包含許多組case,每一組case都有一個需要比較的值,在執行時,switch()內的變數會按照由上而下的順序一一與case中的值做比較,若符合條件就執行對應的程式碼
直到碰到break或是switch程!式區塊執行到結尾才會停止,換句話說case是執行點,break是結束點,而default就像是if...else中的else,如果上面的每一組case都不符合,就會執行default!
PS. switch...case 只適用於精確值的判斷,不適用於範圍值的判斷。

來看看程式碼吧,這個範例是用來轉換並顯示今天是星期幾

<?php
$week = 2;
	switch($week){
		case 1:
			echo '今天是周一,中午吃餛飩麵<br/>';
			break; //終止分支結構執行
		case 2:
			echo '今天週二,中午吃生菜沙拉(我好健康)<br/>';
			break;
		case 3;
			echo '今天是周三,中午是便當<br/>';
			break;
		case 4:
			echo '今天是周四,中午吃....<br/>';
			break;
		case 5:
			echo '今天是周五,中午我已經不知道要吃什麼了<br/>';
			break;
		default:
			echo '今天是周末,當然睡到中午阿!<br/>';
	}

Day13 Winnie的聊天室

其實跳出迴圈的指令我寫在明天,因為今天覺得篇幅夠多了><,明天會介紹迴圈、跳出迴圈指令—break、continue、goto~~
今天覺得編故事蠻快樂的,編如果...會怎樣...,也是一個小遊戲,有一個破冰遊戲就是接龍故事,遊戲開始前先設好開頭跟結尾,每個人對上一個人的發言,接下去,接力完成一個故事,最後要圓回來,這蠻考驗想像力的XDD


上一篇
Day12 PHP運算符(子)
下一篇
Day14 流程控制之迴圈
系列文
PHP 語法通關30

尚未有邦友留言

立即登入留言