PHP流程控制

IF条件结构流程

王同学是生活极度充满娱乐化和享受生活的人。他抵达北京或者大连的时候做的事,他抵达后做的事情,如下:

  • 半夜到达,先去夜店参加假面舞会
  • 早上抵达,爱在酒店泡个澡
  • 中午到达,会吃上一份神户牛肉
  • 晚上到达,总爱去找朋友去述说一下心中的寂寞

我们来了解一下他的语法规则:

<?php

if(判断语句1{
    执行语句体1
    
}elseif(判断语句2){
    执行语句体2
    
}elseif(判断语句n){
    执行语句体n
        
}else{
    最后的else语句可选
}

//后续代码

?>
<?php

$week=date('4');
if($week<'6'){
    echo '还没到周末,继续上班...';
}

?>

输出结果为:

还没到周末,继续上班...
<?php

/*
 定义一个随机变量,抵达时间,随机0点至24点
 6-10,酒店泡澡
 10-14,吃神户牛肉
 19-22,找朋友聊天
 22-23,酒店泡澡
 1-3,夜店参加舞会
 else,睡觉或工作中
 */
 
$time=rand(0,23);
echo $time.PHP_EOL;
if($time>=6 && $time<10){
    echo '酒店泡澡';
}elseif ($time>=10 && $time<14){
    echo '吃神户牛肉';
}elseif ($time>=19 && $time<22){
    echo '找朋友聊天';
}elseif ($time>=22 && $time<23){
    echo '酒店泡澡';
}elseif ($time>=1 && $time<3){
    echo '夜店参加舞会';
}else{
    echo '睡觉或工作中';
};

?>

输出结果为:

13
吃神户牛肉

IF语句多种嵌套

王思总同学在出行和项目中也是极度有计划性。他给自己的生活秘书和工作秘书分别指派了出差的行程:

生活上:
先查天气,下雨带雨具和毛巾。不下雨要带防晒霜;
雨具、毛巾和防晒霜的情况要提前检查,如果没有要及时买。

工作上:
要提前沟通去大连前的工作计划,准备好了要及时检查,检查合格,打印签单;
没有及时准备好的情况下,要列出主要的项目沟通议题。

类似于上面的这种情况判断,我们就需要用到if...elseif...else反复嵌套的结构了。

if语句中可以嵌套一个或多个if语句,以实现对多个参数的判断,这就是if语句的多种嵌套。

<?php

/*
0表示工作秘书,1表示生活秘书
用代码模拟随机产生当前的行程安排是生活秘书负责还是工作秘书负责

生活秘书:
    下雨和不下雨的状态,随机产生,下雨状态为1,不下雨状态为0
        是否购买雨伞,购买了雨伞为1,输出:下雨天,已经购买雨伞;未购买雨伞为0,输出:下雨天,需要购买雨伞;
        是否购买了防晒霜,购买了为1,输出:未下雨,已经购买了防晒霜;未购买为0,输出:未下雨,需要购买防晒霜。
工作秘书:
    是否准备好了会议议程,准备好了为1,输出:已准备好,可以随时出发;未准备好为0,输出:没有准备好,需要打印,延迟出发。
 */
 
$secretary=rand(0,1);
if($secretary){
    echo 'secretary_life'.PHP_EOL;
    $rain=rand(0,1);
    if($rain){
        echo 'rain'.PHP_EOL;
        $umbrella=rand(0,1);
        if($umbrella){
            echo 'umbrella'.PHP_EOL;
            echo '下雨天,已经购买雨伞';
        }else{
            echo '下雨天,需要购买雨伞';
        }
    }else{
        echo 'sunny'.PHP_EOL;
        $sunsreen=rand(0,1);
        if($sunsreen){
            echo '未下雨,已经购买了防晒霜';
        }else{
            echo '未下雨,需要购买防晒霜';
        }
    }
}else{
    echo 'secretary_working'.PHP_EOL;
    $agenda=rand(0,1);
    if($agenda){
        echo '已准备好,可以随时出发';
    }else{
        echo '没有准备好,需要打印,延迟出发';
    }
}

?>

输出结果为:

secretary_life
rain
下雨天,需要购买雨伞

SWITCH语句的使用

王同学家里头特别有钱,所以他的行程方式和正常人的又有些不一样。

他的出行方式呢有6种,如下:

  1. 司机开车
  2. 民航
  3. 自己家的专机
  4. 火车动车
  5. 骑马
  6. 游轮

switch...case 的语法结构如下:

<?php

switch(变量){    //字符串,整型

       case 具体值1:
       
               执行代码;
               break;

       case 具体值2:
       
               执行代码2;
               break;

       case 具体值3:

               执行代码3;
               break;

       default:
			   执行代码4;
               break;

}

?>
  • 上面的break是可选的
  • 上面的default也是可选的。
  • 不要在case 后面写成分号,后面是冒号:
  • 不要在case后面写判断区间,如($foo > 20 或者 $foo == 30)。
  • switch里面在变量最好是 整型、字符串,因为布尔判断更适合 > if…else…
<?php

//定义出行工具
$tool=rand(1,6);
echo $tool.PHP_EOL;

switch($tool){

    case 1:
        echo '司机开车';
        break;
    case 2:
        echo '民航';
        break;
    case 3:
        echo '自己家的专机';
        break;
    case 4:
        echo '火车动车';
        break;
    case 5:
        echo '骑马';
        break;
    case 6:
       echo '游轮';
       break;


}

?>

输出结果为:

4
火车动车

DO WHILE循环语句的使用

王同学需要反复往返于北京和大连,就是典型的循环结构。假设王思总投资这个项目需要往返大连100次,每次往返都王同学都会计数一次。难道我们写一百遍同样的代码?显然对于智商极高的程序员来说不可能这样处理。

我们抽象了人类的这种思维。我们定义一种循环结构:

<?php

//定义需要往返的次数
$count = 1;

//while后面接布尔值判断,为真执行,为假停止
//$count 小于100的时候执行,也就是$count为0至99的时候执行
//如果$count不小于100了,循环停止执行后续的代码

//循环开始处

while($count < 100){

    echo '我是王思聪,这是我第' . $count . '次出差'.PHP_EOL;
    //每次执行让$count+1,这样的话,就不会产生$count永远小于100的情况了
    $count++;

//循环结束

}

?>

输出结果为:

我是王思聪,这是我第1次出差
我是王思聪,这是我第2次出差
我是王思聪,这是我第3次出差
......
我是王思聪,这是我第99次出差

do…while与while的区别:

do...while 与 while的语法结构基本一样,也是一个布尔型循环,功能也基本一样。

基本语法规定如下:

do {
   //代码块
} while (判断);

do…while与while的区别是,它们的值的检查时机不同。
do-while 不论while判断是否成立,先执行一次代码代码块循环语句,保证会执行一次(表达式的真值在每次循环结束后检查)。
然而我们之前的while循环会检查布尔判断区域,成立则执行。不成立则不执行。

我们用代码去验证一下:

<?php

$i = 0;
do {
    echo $i;
} while ($i > 0);

?>

输出结果为:

0

FOR循环语句的使用

同学反复往返与北京和大连,并且在本上记录往返次数。在PHP中还有另外一种实现方式能够实现同样的计数。

for 循环是 PHP 中的一种计数型循环,它的语法比较数活多变。

for (表达示1; 表达示2; 表达示3){
        需要执行的代码段
}
  • 表达式1 是初始化赋值,可以同时赋值多个代码。
  • 表达示2 在每次循环开始前求值。如果值为 TRUE,则继续循环,执行嵌套的循环语句。如果值为 FALSE,则终止循环。
  • 表达示3 在每次循环之后被求值。

我们来写个简单的例子,看看:

<?php

for ($i = 1; $i <= 10; $i++) {
    echo '书桓走的第'.$i.'天,想他。'.PHP_EOL;
}

?>

输出结果为:

书桓走的第1天,想他。
书桓走的第2天,想他。
书桓走的第3天,想他。
书桓走的第4天,想他。
书桓走的第5天,想他。
书桓走的第6天,想他。
书桓走的第7天,想他。
书桓走的第8天,想他。
书桓走的第9天,想他。
书桓走的第10天,想他。

GOTO循环语句的使用。

我们了解到一个情况,王同学每周往返北京大连,但有一个特例:

项目失败后或者集团临时通知,他就可以不再这么每周往返了。

基本语法:

<?php

goto wan;
echo '天王盖地虎';

wan:
echo '小鸡炖蘑菇';

?>

输出结果为:

小鸡炖蘑菇

代码示例:

<?php

for($i=1; $i<100; $i++) {
    echo '第'. $i .'周往返北京大连'.PHP_EOL;
    if($i == 17){
        goto end;
    }
}
end:
echo '集团公司要求停止此项目';

?>

输出结果为:

1周往返北京大连
第2周往返北京大连
......17周往返北京大连
集团公司要求停止此项目

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值