前言

上一篇文章对PHP的一些类型和运算符进行了简单的讲解。PHP入门之类型与运算符

这篇简单讲解一下流程控制。结尾有实例,实例内容是用switch分支和for循环分别做一个计算器和金字塔。

分支控制

单分支控制

if语句 语法如下:

if(表达式){

语句1;

语句2;

...

}

双分支控制

if else语句。语法如下

if(表达式){

语句1;

语句2;

...

}else{

语句1;

语句2;

...

}

如果表达式为真,那么执行{}里面得。如果为假,直接执行else{}里面得语句。

举个例子:

$age=19;
if ($age>18){
echo '你已经成年啦'; #因为$age=19 大于18,所以表达式为真,所以输出后面得。所以输出“你已经成年啦”
}else{
echo '小可爱,你还未成年!';
}

多分支控制

语法:

if(){

语句1;

...

}else if(){

语句1;

...

}else{

语句1;

...

}

这里得else if(){}可以加很多个。

举个例子,比如:

$age=3;
if ($age>18){
echo '你已经成年啦';
}elseif($age>10 && $age<18){
echo '是少年啦';
}elseif($age>5 && $age<10){
echo '你还是个孩子';
}else{
echo '是婴儿啦';
}

多分支还有switch语句。语法如下。

switch(表达式){

case常量1:

break;

case常量2:

break;

case常量3:

break;

case常量4:

break;

...

}

举个例子:

$a=1;
switch ($a){
case 1:
echo '今天星期1';
break;
case 2:
echo '今天星期2';
break;
case 3:
echo '今天星期3';
break;
//这里可以写很多个
default:
echo '输入有误'; }

这里需要注意得是,case语句得break不可以省略,否则无法跳出switch语句,继续向下执行,直到遇到break。还有一点需要注意得是,default语句放在哪里没影响,程序执行顺序是,先查找case语句,case语句没有符合得,在寻找default语句。

区分一下,什么时候用if语句,什么时候用switch语句。

当控制得是一个范围时,一般用if语句,当控制得是每个点时,用switch语句。

循环控制

for循环控制。

语法为for(循环初值;循环得条件;步长){

语句.....

}

举个例子:

for ($age=0;$age<20;$age++){

echo '
这是一个循环';

}

直到循环条件语句为假然后跳出循环。



while循环

循环格式为:

while(循环控制){

循环语句;

}

举个例子:

$a=0;
while ($a<10){ echo '<br/>这是while循环'.$a;
$a++;
}
#循环语句中一定要有控制语句,在这里是$a++,如果不加,0永远小于10,这个一个死循环。

do while循环

循环格式为:

do{

循环语句

}while(循环控制);

举个例子:

$i=0;
do{
echo '<br/>这是一个do while循环'.$i;
$i++;
}while($i<10); 这里也一样,如果不加$i++控制,也会成为死循环。

实例

下面用一个具体的实例,巩固循环流程控制。

switch分支完成简单计算器。

先完成页面的设计,代码如下。

<html>
<head>
<title>这是一个计算器</title>
</head>
<body >
#由于是本地,所以将表单提交到okok.php。
<form action="okok.php" method="post">
<table>
<tr><td>请输入</td><td><input type="text" name="sum1"></td></tr><br/>
<tr><td>请在输入</td><td><input type="text" name="sum2"></td></tr>
<tr><td>点击计算</td><td><input type="submit"></td></tr>
</table>
<select name="oper" >
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
</form>
</body>
</html>

显示到页面的内容如下



接下来在okok.php中用switch分支进行核心运算。代码如下:

<?php
$sum1=$_POST['sum1'];
$sum2=$_POST['sum2'];
$oper=$_POST['oper'];
$res=0;
switch ($oper){
case "+":
$res=$sum1+$sum2;
break;
case "-":
$res=$sum1-$sum2;
break;
case "*":
$res=$sum1*$sum2;
break;
case "/":
$res=$sum1/$sum2;
break;
default:
echo '运算符不合法';
}
echo '运算结果为:'.$res.'<br/>'; ?>
<a href="mycal.php">返回初页面</a>

现在来运算一下,输入123+456,查看返回结果。

for循环打印金字塔

<?php
#第一层for循环控制金字塔的层数
for ($i=1;$i<=5;$i++){
#控制"*"号
for ($j=1;$j<=$i;$j++){
echo '*';
}
echo '<br/>';
}
?>

显示效果如图



我们发现只是打印了一半的金字塔,如何补全呢?如果我们再控制一下前面每一行的空格和每行的*号是不是就可以了?我们来认证一下。将上面的代码补全。如下:

<?php
#第一层for循环控制金字塔的层数
for ($i=1;$i<=5;$i++){
#控制空格
for ($k=1;$k<=5-$i;$k++){
echo '&nbsp;';
}
#控制"*"号
for ($j=1;$j<=2*$i-1;$j++){
echo '*';
}
echo '<br/>';
}
?>

我们再进阶一下,如果将这个金字塔内部掏空,又该如何实现呢?我们想一下,是不是我们要只要控制好两个边缘的"*"号,其他地方控制填充空格就可以了,有了思路,我们看代码,又补充了哪些地方。看代码:

<?php
#第一层for循环控制金字塔的层数
for ($i=1;$i<=5;$i++){
#控制空格
for ($k=1;$k<=5-$i;$k++){
echo '&nbsp;';
}
#控制"*"号
for ($j=1;$j<=2*$i-1;$j++){
if ($j==1 || $j==2*$i-1){
echo '*';
}else{
#填充空格
echo '&nbsp;';
}
}
echo '<br/>';
}
?>

效果如下图



咱们再进阶一下,如果将这个空心的三角翻转一下,打印出菱形,那么又该如何实现呢?是不是再原来的基础上再控制一下层数、"*"号、空格就可以完成呢。现在咱们看代码。

<?php
#第一层for循环控制金字塔的层数
for ($i=1;$i<=5;$i++) {
#控制空格
for ($k = 1; $k <= 5 - $i; $k++) {
echo '&nbsp;';
}
#控制"*"号
for ($j = 1; $j <= 2 * $i - 1; $j++) {
if ($j == 1 || $j == 2 * $i - 1) {
echo '*';
} else {
#填充空格
echo '&nbsp;';
}
}
echo '<br/>';
}
#翻转
for ($i=5;$i>=0;$i--){
#控制空格
for ($k=0;$k<=5-$i;$k++){
echo '&nbsp;';
}
#控制*和空格
for ($j=1;$j<=2*$i-3;$j++){
if ($j==1 || $j==2*$i-3){
echo '*';
}else{
echo '&nbsp;';
}
}
echo '<br/>';
}
?>

效果如下

小结

简单的说了一下流程控制,希望对大家有帮助。

PHP入门之流程控制的更多相关文章

  1. Python3.7.4入门-2流程控制工具

    2 流程控制工具 记得在语句后加冒号 2.1 while # Fibonacci series: # the sum of two elements defines the next a, b = 0 ...

  2. python语法入门之流程控制

    python语法入门之流程控制 流程控制是指控制流程,具体指控制程序执行的流程. 流程控制分为三种: 1.顺序结构 程序从上而下的正常执行(正常执行的代码就是顺序结构) 2.分支结构 赋予程序人的思维 ...

  3. Python 3 快速入门 2 —— 流程控制与函数

    本文假设你已经有一门面向对象编程语言基础,如Java等,且希望快速了解并使用Python语言.本文对重点语法和数据结构以及用法进行详细说明,同时对一些难以理解的点进行了图解,以便大家快速入门.一些较偏 ...

  4. 04-Python入门学习-流程控制

    一.流程控制if 语法1: if 条件:  code1  code2  code3  .... age=180 height=163 weight=75 sex='female' is_beautif ...

  5. 04 Python入门学习-流程控制(if else elif while for)

    一:流程控制if 语法一: if 条件: code1 code2 code3 ... age = 20 height = 170 weight = 60 sex = 'female' is_beaut ...

  6. python入门之流程控制

    if else 格式: if 条件 command1 command2elif 条件: command3    command4 else: command3 command4 注意条件后和else后 ...

  7. Python入门6 —— 流程控制 - if判断

    代码块: 1.代码块指的是同一级别的代码,在python中用缩进相同的空格数(除了顶级代码块无任何缩进之外,其余代码块都是在原有的基础上缩进4个空格)来标识同一级的代码块 2.同一级别的代码块会按照自 ...

  8. Scala深入浅出实战经典-----002Scala函数定义、流程控制、异常处理入门实战

    002-Scala函数定义.流程控制.异常处理入门实战 Scala函数定义 语句结束无分号 定义无参函数 def 函数名称(参数名称:参数类型)[:Unit=]{ 函数体 } 老师的代码 我的实际代码 ...

  9. python入门篇之介绍和流程控制(一)

    Python入门 一.第一句python代码 很多语言的第一句python代码都是以“你好,世界”开始的,那么我们的python也是如此. 在 /home/dev/ 目录下创建 hello.py 文件 ...

随机推荐

  1. MFC 添加C++类,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数;

    MFC 添加C++类,不用定义C++类的对象,别的类不通过C++类的定义的对象就可以直接调用C++类里面的成员函数: 1先在mfc程序中添加普通类CProdata,然后删除头文件Prodata.h里面 ...

  2. Mac下搭建react开发环境

    安装node 官网下载 https://nodejs.org/en/ 双击安装,接下来都是默认选择即可,直至安装成功 测试是否安装成功,分别输入以下命令: node -v npm -v 如下图所示,说 ...

  3. python设计模式之策略模式

    每次看到项目中存在大量的if else代码时,都会心生一丝不安全感. 特别是产品给的需求需要添加或者更改一种if条件时,生怕会因为自己的疏忽而使代码天崩地裂,哈哈,本文的目的就是来解决这种不安全感的, ...

  4. Linux命令查勘进程:ps -ef |grep java

    一.ps -ef |grep java 查看包含“java”的所有进程 二.涉及命令详解 ps命令将某个进程显示出来(是LINUX下最常用的也是非常强大的进程查看命令) grep命令是查找(是一种强大 ...

  5. win10 麦克风无法使用,可能是设置了权限

    驱动什么的都正常,平白无故麦克风不好用了,原来是之前自己设置了麦克风权限: 把这个开关打开就可以了. (完)

  6. linux之文件基本操作

    文件/目录管理命令: cd命令主要是改变目录的功能 cd ~ 返回登录目录 cd / 返回系统根目录 cd ../ 或者cd ..  返回上一级目录 cd -  返回上一次访问的目录 pwd命令用于显 ...

  7. fastjson到底做错了什么?为什么会被频繁爆出漏洞?

    GitHub 15.8k Star 的Java工程师成神之路,不来了解一下吗! GitHub 15.8k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 15.8k Star ...

  8. 12.Clear Flags属性与天空盒

    选中Hierarchy面板的摄像机,然后在右侧Inspector面板的Clear Flags属性可以找到有如下选项, SkyBox:天空盒(默认效果,让场景看着有一个天空) Solid Color:固 ...

  9. PE文件格式详解(六)

    0x00 前言 前面两篇讲到了输出表的内容以及涉及如何在hexWorkShop中找到输出表及输入DLL,感觉有几个地方还是没有理解好,比如由数据目录表DataDirectory[16]找到输出表表后以 ...

  10. rabbitmq部署及配置与验证

    1. 场景描述 朋友项目需要弄个测试环境,稍微帮忙了下,系统不复杂,但是需要自己安装mysql.Reids.Es.RabbitMq等,Mq主要用在同步用户信息与发送站内消息和短信上,RabbitMq以 ...