「PHP8入门指南」条件分支语句的使用

前言:

在现实生活中,我们常常会说:如果明天下雨的话,那么我就带把伞;如果明天很热的话,那么我就不出门了。这种“如果。。。那么。。。”的假设关系的句式,很好的表达了我们自己在遇到不同情况时,所要做出的决定与选择。那么在计算机编程语言中呢?当我们的计算机在遭遇不同情况的情形时,它又是作何选择的呢?


if...else条件分支语句


在PHP中,我们使用if...else条件分支语句,用于根据不同条件执行不同动作。在我们编写代码时,常常需要为不同的判断执行不同的动作。那么这时候if...else条件分支语句就很好的帮我们解决了这个问题。


在PHP中,提供了下列条件分支语句:

  1. if条件单路分支语句。在条件成立时执行相应动作。
  2. if...else条件双路分支语句。在条件成立时,执行条件成立的相应动作;否则,执行不成立的相应动作。
  3. if...elseif ... else 多条件多路分支语句。在若干条件之一成立时,执行条件成立的相应动作;否则,执行不成立的相应动作。
  4. switch 多路分支语句。通过判断不同的case(情形),执行相应动作。


if条件单路分支语句

if条件单路分支语句用于单条件判断的情形,仅当指定条件成立时执行代码。

例:

<?php//获取今天的日期$day = date('d');//判断是否是奇数,如果是,则输出if( $day % 2 != 0 ) {  echo "今天是{$day}号,是奇数天";}

运行结果:



注意:if后面的条件必须用小括号()括起来,大括号{}则要将执行代码括起来。这是PHP中规定的语法格式。如果不遵守,则代码就会报错,无法正常运行。


if...else条件双路分支语句

相较于单if条件单路分支语句,多了一个当条件不成立时的执行块。

例:

<?php//获取昨天的日期$day = date('d',strtotime("-1 day"));//判断是否是奇数,如果是,则输出奇数天;如果不是则输出,偶数天if($day % 2 != 0) {  echo "昨天是{$day}号,是奇数天";}else{  echo "昨天是{$day}号,是偶数天";}

运行结果:



if...elseif ... else多条件多路分支语句

在我们遭遇到需要同时对多个条件进行判断与执行时,我们就需要使用if...elseif...else多条件多路分支语句。

例:

<?php//获取当前的时间分钟数$minute = date('i');echo $minute."
";if( $minute <= 10 ) {  echo "当前时分是".$minute.",小于等于10.";}elseif( 10 < $minute && $minute <= 20 ) {  echo "当前时分是".$minute.",小于等于20,大于10.";}elseif( 20 < $minute && $minute <= 30 ) {  echo "当前时分是".$minute.",小于等于30,大于20.";}elseif( 30 < $minute && $minute <= 50 ) {  echo "当前时分是".$minute.",小于等于50,大于30.";}else{  echo "当前时分是".$minute.",小于等于60,大于50.";}

运行结果:



注意:我们其中的elseif是可以根据需要判断条件的多少,来相应的增加的。理论上如果有100个条件需要我们判断,那除去首尾的if和else,我们中间可以插入98个elseif,用来判断和执行相应的代码。不过在实际开发中,我们并不认可通过这种方式来编写我们的代码,这样会让我们的代码变得很臃肿且不易阅读和维护。


小tips:

elseif 和 else if 一样的。无需纠结该写成哪个样。


switch多路分支语句

上面我们讲完了if条件分支语句相关的知识点,接下来讲讲switch多路分支语句。其实,switch 多路语句也用于根据多个不同条件执行不同动作。你可以理解为是if...elseif...else多条件多路分支语句的简化版本。

例:

<?php//获取当前的时间分钟数$minute = date('i');echo $minute."
";switch ( $minute ) {  case $minute <= 10:    echo "当前时分是".$minute.",小于等于10.";    break;  case 10 < $minute && $minute <= 20:    echo "当前时分是".$minute.",小于等于20,大于10.";    break;  case 20 < $minute && $minute <= 30:    echo "当前时分是".$minute.",小于等于30,大于20.";    break;  case 30 < $minute && $minute <= 50:    echo "当前时分是".$minute.",小于等于50,大于30.";    break;  default:    echo "当前时分是".$minute.",小于等于60,大于50.";    break;}

运行结果:



工作原理:首先对一个简单的表达式 n(通常是变量)进行一次计算。将表达式的值与结构中每个 case 的值进行比较。如果存在匹配,则执行与 case 关联的代码。代码执行后,使用 break 来阻止代码跳入下一个 case 中继续执行。default 语句用于不存在匹配(即没有 case 为真)时执行。

Match表达式(PHP8新特性)

其实就是switch表达式的简化版本

例:

<?php$n = 8;//php7switch( $n ) {  case '8':    $result = "这是switch表达式输出的字符串8!";    echo $result;    break;  case8:    $result = "这是switch表达式输出的整型8";    echo $result;    break;}//php8echo match( $n ) {    '8' => "这是match表达式输出的字符串8!",    8 => "这是match表达式输出的整型8",};

运行结果:



注意:根据以上运行结果,我们可以看出,在switch表达式中,它的条件匹配是松散比较,而在match表达式中则是严格比较。如果大家还不知道什么是松散比较和严格比较,可以看看我们上一节的内容,上面有做详细介绍。

总结:

在本节中,我们大量使用到PHP运算符相关的知识点,如果同学们在看本节内容时有些不易理解,我建议同学们好好看看上一节有关PHP运算符和运算符优先级的相关知识。只有理解透彻运算符相关知识点,在看本节代码示例时,才不会云里雾里。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章