背景:PHP程序中,必不可少的要用到流程控制语句。这次对于流程控制语句进行一些总结。

  条件控制语句和循环控制语句是两种基本的语法结构,它们都是用来控制程序执行流程。也是构成程序的主要语法基础。

一。程序的3种控制结构

  1.顺序结构

  顺序结构是最简单基本的结构方式,各流程框依次按顺序执行。

  2.选择(分支)结构

  选择结构就是对给定条件进行判断,条件为真时执行一个分支,条件为假时执行另一个分支。

  3.循环结构

  循环结构可以按照需要多次重复代码运行。可以大概的分为前测试型循环和后测试型循环。

  前测试型循环,先判断后执行。当条件为真时反复执行语句或语句块;条件为假时,跳出循环,继续执行循环后面的语句。

  后测试型循环,先执行后判断。先执行语句或语句块,在进行条件判断,直到条件为假时,跳出循环,继续执行循环后面的语句,否则一直执行语句或语句块。

二。PHP中的控制语句

  条件控制语句:if , else , elseif , switch。

  循环控制语句:while , do....while , for , foreach。

  跳转控制语句:break , contine , retkurn 。

 2.1  条件控制语句

  所谓的条件控制语句就是对语句中不同条件的值进行判断,然后根据不同的条件执行不同的语句。而在条件控制语句中主要有两个语句:if(条件控制语句) 和 switch(多分支语句)。

  2.1.1  if条件控制语句

  if条件控制语句是所有控制语句中最简单的一个,主要根据不同条件的结果进行语句的分别执行。因该语句较为简单,因此不举例说明。(PHP提供了elseif的语句来扩展需求,elseif语句被放置在if和else语句之间,满足多条件同时判断的需求)。

  2.1.2  switch多分支语句

  switch语句和if条件控制语句类似,实现将一个表达式与很多不同的值比较,获取相同的值,并且执行相同的值对应的语句。(列子略)

  注:if语句与switch语句的区别?

  if和switch语句可以从使用的效率上来进行区别,也可以通过实用性角度去区分,如果从实用的效率上进行划分,在对同一个变量的不同值做条件判断时,使用switch语句的效率相对更高一些,尤其是判断的分支越多越明显。

  如果从语句的实用性来分,就要以if条件语句为主,If条件语句是实用性最强和应用范围最广的语句。

  在程序的开发中,if和switch语句的使用应该根据项目中的情况而定,要根据具体情况与具体问题进行分析,使用最适合的条件语句,一般情况下以if为主,但是在实现一些多条件的判断中,特别是在实现框架的功能时就应该使用switch语句。

  2.2  循环控制语句

  循环控制语句是在满足条件的情况下反复的执行某一个操作。在PHP中,提供了4个循环控制语句,分别是while循环语句,do....while循环语句,for循环,foreach循环。

  2.2.1  while循环语句

  while循环语句,其作用是反复的执行某一个操作,是循环控制语句中最简单的一个,while循环控制语句对表达式的值进行判断,当表达式为非0值时,执行while语句中的内嵌语句;当表达式的值为0时,则不执行while语句中的内嵌语句。该语句的特点是:先判断表达式,后执行语句。

  2.2.2  do....while循环语句

  do....while语句也是循环控制语句中的一种,使用方式和while相似,也是通过判断表达式的值来输出循环语句。

  语句流程:先执行一次指定的循环体语句,然后判断表达式的值,当表达式的值为非0时, 返回重新执行循环体语句,直到表达式的值等于0时,循环结束。特点是先执行循环,然后判断循环条件是否成立。

  注:while和do.....while语句之间的区别?

  do....while语句是先执行后判断,无论表达式的值是否为true,都将执行一次循环,而while语句则是先判断表达式的值是否为true,如果为true则执行循环语句;否则将不执行循环语句。

  2.2.3  for循环语句

  for语句是PHP中最复杂的循环控制语句,拥有3个条件表达式。语法如下:

  执行流程:首先执行表达式1;然后执行表达式2,并对表达式2的值进行判断,如果值为真,则执行for循环语句中指定的内嵌语句,如果值为假,则结束循环,跳出for循环语句;最后执行表达式3(要记住是在表达式2的值为真时),返回表达式2继续循环执行。

  2.2.4  foreach循环语句

  foreach循环控制语句自PHP4被引入,主要用于处理数组,是遍历数组的一种简单方法。如果将该语句勇于处理其他的数据类型或者初始化的变量,将会产生错误。语法如下:

        

  参数$variable是指定要遍历的数组,其中,$value是数组的值,$key是数组的键名;code是满足条件时要循环执行的语句。

  注:当使用foreach语句用于其他数据类型或者未初始化的变量时会产生错误。为了避免这个问题,最好使用is_array()函数先来判断变量是否为数组类型,如果是,在进行其他操作。

  2.3  跳转语句

  跳转语句主要分为break语句,continue语句和return语句3个部分。其中前两个主要被应用在指定的环境中,如for循环语句中。return语句在应用环境上较为单一,一般应用在自定义函数和面向对象的类中。

  2.3.1  break跳转语句

  break关键字可以终止当前的循环,包括while , do....while , for , foreach , switch在内的所有控制语句。

  break语句不仅可以跳出档期那的循环,还可以指定跳出几重循环,格式如下:

        

  参数n指定要跳出的循环数量。

  2.3.2  continue跳转语句

  continue语句的作用也是跳出当前循环,但与break语句的区别是,continue只能终止本次循环,而进入到下一次循环中,而break则跳出整个循环体。continue也可以指定跳出几重循环。

PHP流程控制语句(if,foreach,break......)的更多相关文章

  1. JS流程控制语句 退出循环break 在while、for、do...while、while循环中使用break语句退出当前循环,直接执行后面的代码。

    退出循环break 在while.for.do...while.while循环中使用break语句退出当前循环,直接执行后面的代码. 格式如下: for(初始条件;判断条件;循环后条件值更新) { i ...

  2. 流程控制语句(if、for、while、do while、switch、 break、continue)

    3:流程控制语句    (1)顺序结构 从上往下,依次执行    (2)选择结构    按照不同的选择,执行不同的代码    (3)循环结构 做一些重复的代码 4:if语句    (1)三种格式   ...

  3. 基础语法-其它流程控制语句break和continue

    基础语法-其它流程控制语句break和continue 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.break语句 /** * break语句 * @author 尹正杰 * ...

  4. 20151013 C# 第一篇 流程控制语句

    20151013 流程控制语句: 1.选择语句 if … else if...else 选择语句 if(布尔表达式){  语句块:} if(布尔表达式){  语句块1:}else{  语句块2:} i ...

  5. [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句

    [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些,本节参考了网上朋友所写的例子,为的是让更多小伙伴学习 ...

  6. 【PHP入门到精通】:Ch04:流程控制语句

    Ch04: 流程控制语句4.1 条件控制语句(1)if (expr) {  statement1;statement2;} (2)if (expr) {  statement1; } else { s ...

  7. 再回首,Java温故知新(九):Java基础之流程控制语句

    流程控制语句分为条件语句.循环语句和中断语句. 中断语句包括break和continue,两者的区别在于break会跳出整个循环,而continue则是跳出此次循环,之后还会继续下一次循环. 条件语句 ...

  8. java与.net比较学习系列(5) 流程控制语句

    java中流程控制语句主要分为以下几类,第一,条件语句,主要包括if语句和switch语句.第二,循环语句,主要包括while循环语句,for循环语句.第三,跳转语句,主要包括三种,break跳出语句 ...

  9. java基础,流程控制语句

                                流程控制语句 条件语句:              if语句:                        *if(条件 boolean类型) ...

随机推荐

  1. RabbitMQ-基本概念(一)

    整体架构模型 Producer 消息生产者,生产者创建消息然后发布到RabbitM中,消息一般包含2个部分 消息体(payload)和标签 消息体就是带有业务逻辑结构的数据,消息标签用来表述这条消息, ...

  2. excel 2003 默认保存后出现超级连接解决方法

    在excel 2003 中当选中某个单元格然后拷贝出来后发现总是出现超级连接,每次都要取消下很是麻烦 . 于是经过研究找到解决方法,真是累的我够呛 ,先将方法介绍给大家. 工具---自动更正选项--- ...

  3. 救命(洛谷 U4525)

    题目背景 XS中学的校长积劳成疾,最终由于无聊而卧病在沙发.需要药(pi)水(gu)拯救他的生活. 题目描述 现在有n种药水,编号分别为1..n,能拯救校长的药水编号为n 每个药水都可以购买到,但有的 ...

  4. 2.2 convex hull凸包

    1.定义:一组平面上的点,求一个包含所有点的最小的凸多边形,就是凸包问题. 利用编程解决凸包问题,应该得到一组逆时针的顶点的顺序集合,在边上但不是顶点,则不包含在集合里. 2.机械的方法:将点所在的位 ...

  5. E - Super Jumping! Jumping! Jumping! DP

    Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. May ...

  6. Hyper-v交换机添加出错解决方法

    这个问题中文找不到解决方法,只能重新安装系统了 重新安装系统后,按照顺序操作,不要去动设备管理器中的东西,也不用动驱动,先删除虚拟机的网络连接,在删除虚拟交换机就可以了,没有再出现问题

  7. Java的动态代理(DynamicProxy)

    代理的概述 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理. 代理模式UML图 ...

  8. OSX: node中安装zeromq

    1. brew install pkg-config2. brew install zmq3. export PKG_CONFIG_PATH="/usr/local/lib/pkgconfi ...

  9. C++类库

    转载自:http://blog.csdn.net/Augusdi/article/details/8989763 基础类 一.C++标准库 1. Dinkumware C++ Library 参考站点 ...

  10. WingIDE 5.0注冊机

    在wingIDE下开发python很方便,但IDE不是免费的,网上有破解的方法.请支持正版. 把下列文件CalcActivationCode.py载入到wingIDE中.LicenseID能够随便给一 ...