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


<<:  Day 13 Docker 安装

>>:  Day28:网页排名演算法(PageRank)

Day 12 - OOP 初探 (2) - Class

前言 昨天讲完 Javascript OOP 两个重要支柱,今天接着这个主题,来讲讲 class 吧...

[DAY29] 用 Application Insights 来监视部署的模型

DAY29 用 Application Insights 来监视部署的模型 我们已经把大部份的 Az...

离职倒数18天:重新开始思考一个科技业大家爱揶揄的话题「PM 到底在干嘛」

我最近在考虑要找人来帮忙管理我们的 App。请认识的人介绍时,我说工作内容包括:看用户的反馈然後分类...

Day11:while循环

Python程序语言总共有二种回圈的语法。第一种是"for"回圈,另外一个则是&...

Day9:串列(list)

串列(list)是一种资料型态(Data type),在串列中的每一个元素都会被分配一个值从&quo...