PHP | 顺序结构、条件结构、循环结构 知识梳理与运用实例

1.顺序结构

demo:

<?php
    $shoesPrice = 49; //鞋子单价
    $shoesNum = 1; //鞋子数量
    $shoesMoney = $shoesPrice * $shoesNum;

    $shirtPrice = 99; //衬衣单价
    $shirtNum = 2; //衬衣数量
    $shirtMoney = $shirtPrice * $shirtNum;

    $orderMoney = $shoesMoney +  $shirtMoney;
    echo $orderMoney ;
?>

输出
···
247
···


2.条件结构

2.1 if...else...

语法:

<?php
if(条件){
     //分配服务器干的任务A
}else{
     //分配服务器干的任务B
}
?>

demo:
一些酒店为了促销,吸引顾客,可以给当天生日的人八折优惠:

<?php
    date_default_timezone_set('Asia/ShangHai');
    $today = date('m-d',time());//获取当天日期
    $birthday = "02-14";//生日
    $money = 238;//消费金额
    $discount = 0.8;//八折优惠
    if($today == $birthday){
        $money = $money * $discount;
    }else{
        $money = $money * 1;
    }
    
    echo $money;
?>



2.2 if…else if…

语法:

<?php
if(条件一){
     //分配服务器干的任务A
}else if(条件二){
     //分配服务器干的任务B
}
?>

demo:
在妇女节那个月,需要给女员工发300元奖金:

<?php
    $totalMoney = 0;//总工资
    $basicMoney =  2000;//基本工资
    $sex = "女";

    if($sex == "男"){
                $totalMoney = $basicMoney  + 0;// 男的没奖金
    }else if($sex == "女"){
                $totalMoney = $basicMoney  + 300;// 女的有奖金300元
    }
    echo $totalMoney;
?>



2.3 if…else if…else…

语法:

<?php
if(条件一){
     //分配服务器干的任务A
}else if(条件二){
     //分配服务器干的任务B
}else{
     //分配服务器干的任务C
}
?>

demo:
如果我们需要提供上课的提示信息,假设如果为周一则上午有课,如果为周三则下午有课,其它时间没课。

<?php
date_default_timezone_set('asia/shanghai');
$week = date("w");//获取当天星期几
$info = "";//提示信息
if($week == 1){
        $info = "上午有课";
}else if($week == 3){
    $info = "下午有课";   
}else{
        $info = "今天没课";
}
echo $info; //输出提示信息
?>



2.4 switch…case…

语法:

<?php
switch (条件)
{
  case 条件值一:
  //任务一
  break; 
  case 条件值二:
  //任务二
  break;
     default:
  //默认任务
}
?>

demo:
一个玩具中奖程序:

<?php
$num = rand(1,50);//获取1至50的随机数
$info = "";//提示信息
switch($num){
    case 1:
        $info = "恭喜你!中了一等奖!";
        break;
    case 2:
        $info = "恭喜你!中了二等奖!";
        break;
    case 3:
        $info = "恭喜你!中了三等奖!";
        break;
    default:
        $info = "很遗憾!你没有中奖!";
  
}   

 echo $info; //输出是否中奖
?>



3. 循环结构

3.1 while循环语句

语法:

<?php
while(条件){ 
     //执行任务
}
?>

demo:
虚拟宠物:当小宠物饿了,就需要喂食。假设初始化小宠物饿的时候,体力数字为12,当达到100的时候就饱了,我们使用随机数,模拟喂食小宠物小面包恢复的体力值;

<?php
$sum = 12;//小宠物当前的饥饿程度
echo "我饿啦:-(";
echo "<br />";
while($sum<100)
{//小宠物的饥饿程度到100,表示小宠物吃饱啦,不用继续喂了,没吃饱继续喂食
    $num = rand(1,20);//随机数,模拟喂食小宠物的小面包
    $sum = $sum + $num; //小宠物吃小面包
    echo "我还没吃饱呢!";
    echo "<br />";
}
echo "终于吃饱啦^_^";
?>

运行效果:

我饿啦:-(
我还没吃饱呢!
我还没吃饱呢!
我还没吃饱呢!
我还没吃饱呢!
我还没吃饱呢!
我还没吃饱呢!
我还没吃饱呢!
我还没吃饱呢!
我还没吃饱呢!
终于吃饱啦^_^



3.2 do while循环语句

语法:

<?php
do{ 
     //执行任务
}while(条件)
?>

demo:
胖虎在跑步锻炼身体,需要跑十圈,要求每跑一圈打印一下:

<?php
$i =  1 ; //从第1圈开始跑
do{  //跑10圈
    echo "在跑第".$i."圈。";
    echo "<br />";
    $i++;
}while($i<=10);
?>

运行结果:

在跑第1圈。
在跑第2圈。
在跑第3圈。
在跑第4圈。
在跑第5圈。
在跑第6圈。
在跑第7圈。
在跑第8圈。
在跑第9圈。
在跑第10圈。



3.3 whiledo…while语句的区别
  • while先判断条件是否成立,后执行循环,
    do...while先执行一次任务,再判断是否继续执行循环,也就是说do...while至少会执行一次任务。
  • 当条件为FALSE时,while中的任务会一次也不执行,do...while中的任务会执行1次。

demo:

<?php
    //A例子
    $num = 2;
    $sum  = 10; 
    while($num>3){
        $sum = $sum  + 10;
    }
    echo "A例子的结果:".$sum."<br />";
    //B例子
    $num = 2;
    $sum  = 10;         
    do{
        $sum = $sum  + 10;
    }while($num>3);
    echo "B例子的结果:".$sum."<br />";
?>

运行结果:

A例子的结果:10
B例子的结果:20



3.4 do…while语句的运用优势举例

假设有一种棋类游戏,首先掷骰子,若不为6,前进骰子的点数的步长;若为6,前进骰子的点数的步长,并可以再掷一次。写一段脚本,完成一次抛骰子的运算:

<?php

    //while例子
    $sum  = 0; 
    $num = rand(1,6); //获取1至6的随机数,模拟掷骰子
    $sum = $sum  + $num;//前进步长
    while($num==6){
        $num = rand(1,6);//获取1至6的随机数,模拟掷骰子
        $sum = $sum  + $num;//前进步长
    };
    echo "while例子执行完毕,前进:".$sum ."<br />";
    
    //do...while例子
    $sum  = 0; 
    do{
        $num = rand(1,6);//获取1至6的随机数,模拟掷骰子
        $sum = $sum  + $num;//前进步长
    }while($num==6);
    echo "do...while例子执行完毕,前进:".$sum ."<br />";
?>

从代码的结构和可读性角度来看,在这里使用do...while更合适。



3.5 for循环语句

语法:

<?php
for(初始化;循环条件;递增项){
      //执行任务
}
?>

demo:
累积求和1-100:

<?php
//for语句写法
for($i = 1,$sum = 0;$i<=100;$i++){
    $sum = $sum + $i; //    累加求和
}
echo "for语句的运行结果:".$sum."<br />" ;

//while语句写法
$i =  1 ; // 从1开始累加
$sum = 0; //初始化和为0
while($i<=100){  //判断是否小于100
    $sum = $sum + $i; //    累加求和
    $i++; //递增1
}
echo "while语句的运行结果:".$sum."<br />" ;
?>



3.6 foreach循环语句

语法:
在PHP中foreach循环语句,常用于遍历数组,

一般有两种使用方式:不取下标、取下标

(1)只取值,不取下标

<?php
 foreach (数组 as 值){
//执行的任务
}
?>

(2)同时取下标和值

<?php
foreach (数组 as 下标 => 值){
 //执行的任务
}
?>

这里跟Java语法有区别:

foreach (值 :  数组){
//执行的任务
}

demo:

//foreach循环
for(String str : arr){                      //这里的str就是为了获取每次循环的arr中的值
   System.out.println(str);               //就相当于 String str=arr[i]
}

php-demo:

<?php
$students = array(
'2010'=>'令狐冲',
'2011'=>'林平之',
'2012'=>'曲洋',
'2013'=>'任盈盈',
'2014'=>'向问天',
'2015'=>'任我行',
'2016'=>'冲虚',
'2017'=>'方正',
'2018'=>'岳不群',
'2019'=>'宁中则',
);//10个学生的学号和姓名,用数组存储

//使用循环结构遍历数组,获取学号和姓名  
echo "只取值,不取下标的打印:";
echo "<br />"."<br />";
foreach($students as $v)
{ 
    echo $v;//输出(打印)姓名
    echo "<br />";
}
echo "<br />"."--------------"."<br />"."<br />";


echo "同时取下标和值的打印:";
echo "<br />"."<br />";
foreach($students as $key => $value)
{ 
    echo '这是键为 '.$key.' 对应的值:'.$value;
    echo "<br />";
}

?>

运行结果:

只取值,不取下标的打印:

令狐冲
林平之
曲洋
任盈盈
向问天
任我行
冲虚
方正
岳不群
宁中则

--------------

同时取下标和值的打印:

这是键为 2010 对应的值:令狐冲
这是键为 2011 对应的值:林平之
这是键为 2012 对应的值:曲洋
这是键为 2013 对应的值:任盈盈
这是键为 2014 对应的值:向问天
这是键为 2015 对应的值:任我行
这是键为 2016 对应的值:冲虚
这是键为 2017 对应的值:方正
这是键为 2018 对应的值:岳不群
这是键为 2019 对应的值:宁中则

参考资料(慕课网)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,340评论 0 2
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,788评论 0 38
  • 一、数据类型 在PHP中,支持8种原始类型,其中包括四种标量类型、两种复合类型和两种特殊类型。PHP是一门松散类型...
    大嘴蝸牛阅读 942评论 4 5
  • 4月9日 星期天 阴雨(农历三月十三) 我是日记星球的34号星宝宝,正在参加孙老师的日记星球21天蜕变之旅的写作训...
    誉仔妈妈阅读 532评论 0 3
  • 行业 知识本身变化 一个好的知识 = 新的知识传播路径 * 新的知识密度 知识传播途径 什么意思呢?就是说以前百度...
    爱摄影的奥派阅读 511评论 0 1