紫郢青索

知之者不如好之者,好之者不如乐之者

用户工具

站点工具


PHP条件判断

要让程序根据不同的条件做不同的事情,就需要条件判断的语句。

if语句

比如你要想在你生日的那一天(7月11日),让机器给你说一句“Happy birthday!”

if_1.php
<?php
    // 设置时区
    date_default_timezone_set("Asia/Shanghai");
    // 获取当前日期,格式:07-11
    $date = date("m-d");
    // 判断今天是不是你的生日,如果是你的生日,就打印“Happy birthday!”
    if($date == '07-11'){
        echo 'Happy birthday!';
    }
?>

if ... else ... 语句

想在其他的日期里打印 “It is nice day!”

if_else_1.php
<?php
    // 设置时区
    date_default_timezone_set("Asia/Shanghai");
    // 获取当前日期,格式:07-11
    $date = date("m-d");
    // 判断今天是不是你的生日,如果是你的生日,就打印“Happy birthday!”
    if($date == '07-11'){
        echo 'Happy birthday!';
    }else{
        echo 'It is nice day!';
    }
?>

if ... else if ... else ... 语句

如果想在你的好友Lily生日(10月12日),打印一条提醒 “Today is Lily's birthday!”

if_elseif_else_1.php
<?php
    // 设置时区
    date_default_timezone_set("Asia/Shanghai");
    // 获取当前日期,格式:07-11
    $date = date("m-d");
    // 判断今天是不是你的生日,如果是你的生日,就打印“Happy birthday!”
    if($date == '07-11'){
        echo 'Happy birthday!';
    }else if($date == '10-12'){
        echo 'Today is Lily\'s birthday!';
    }else{
        echo 'It is nice day!';
    }
?>

switch 语句

当有多个朋友需要做生日提醒时,如果使用if … else if … else if …就是写多个 else if 判断。

这种情况也可以使用 switch 语句实现,也就是说:把同一个变量和多个值进行比较,并根据是否等于某个值来执行不同的处理,就可以用switch了。

比如,想要分别提醒 自己的生日(07月11日) 和 多个朋友的生日:Lily(10月12日),Lucy(09月30日),Mag(12月08日),Tom(01月25日) ,并且没有人过生日时打印“It is nice day!”。 switch实现如下:

switch_1.php
<?php
    // 设置时区
    date_default_timezone_set("Asia/Shanghai");
    // 获取当前日期,格式:07-11
    $date = date("m-d");
    switch($date){
        case '07-11':
            echo 'Happy birthday!';
            break;
        case '10-12':
            echo 'Today is Lily\'s birthday!';
            break;
        case '09-30':
            echo 'Today is Lucy\'s birthday!';
            break;
        case '12-08':
            echo 'Today is Mag\'s birthday!';
            break;
        case '01-25':
            echo 'Today is Tom\'s birthday!';
            break;
        default:
            echo 'It is nice day!';
    }
?>

上面的例子有一个特殊项 default,它表示其它 case 都不匹配的情况下执行。

如果只想在自己生日时提醒'Happy birthday!',其他朋友生日统一提醒”Today is your friend's birthday.“,没有人过生日时打印“It is nice day!”。

switch_1.php
<?php
    // 设置时区
    date_default_timezone_set("Asia/Shanghai");
    // 获取当前日期,格式:07-11
    $date = date("m-d");
    switch($date){
        case '07-11':
            echo 'Happy birthday!';
            break;
        case '10-12':
        case '09-30':
        case '12-08':
        case '01-25':
            echo 'Today is your friend\'s birthday.';
            break;
        default:
            echo 'It is nice day!';
    }
?>

从上面的例子我们可以总结 switch 是如何执行的。switch 语句段是顺序执行的,当遇到一个 case 语句中的值和 switch 表达式的值匹配时,就执行该case下的语句段,直到 switch 的程序段结束或者遇到第一个 break 语句为止。如果不在 case 的语句段最后写上 break 的话,PHP 将继续执行下一个 case 中的语句段。如果所有case执行完没有一个匹配的case,就执行default的语句段。

if 和 switch 性能比较

官网有这样一段话:

在 switch 语句中条件只求值一次并用来和每个 case 语句比较。在 elseif 语句中条件会再次求值。如果条件比一个简单的比较要复杂得多或者在一个很多次的循环中,那么用 switch 语句可能会快一些。

不管是if 还是 switch 条件判断,有个关键点,就是数据比较,这里我们需要特别注意 ☞ PHP 类型比较参考

:-D