PHP-流程控制语句


任何 PHP 脚本都是由一系列语句构成的。一条语句可以是一个赋值语句,一个函数调用,一个循环,一个条件语句或者甚至是一个什么也不做的语句(空语句)。语句通常以分号结束。此外,还可以用花括号将一组语句封装成一个语句组。语句组本身可以当作是一行语句。

什么是流程控制

  • 流程控制:对程序代码执行流程的控制就叫流程控制。
  • 流程:程序执行的顺序就是流程。
  • 流程的分类
    • 顺序结构:程序自上而下的执行过程就是顺序结构,所有的程序默认都是顺序结构。
    • 分支结构(选择结构):
      • 程序在执行的过程中,往往要根据不同的结果做出不同的选择,或者忽略部分代码的执行,这种执行的结构叫做分支结构。
      • 分支结构分类:
        • 单项分支结构
        • 双向分支结构
        • 多向分支结构
        • 巢状分支结构
    • 循环结构:简单的说就是让计算机重复执行一件事或者说重复执行一段代码。

单项分支结构

  • 如果条件表达式为真,将执行if之后的第一条PHP代码;反之,则不会执行if之后的第一条语句。
  • 注意:该格式的分支结构仅能控制if之后的第一条PHP语句。
//格式一
if(条件表达式) 一条PHP代码;

//格式二
if(条件表达式){
	一条PHP代码;
	一条PHP代码;
	...
};
//可以用花括号将一组语句封装成一个语句组

双向分支结构

  • 双向表达式就是在单项表达式的基础上增加了一个else分支。
  • 如果条件表达式为真,将执行if之后的第一条PHP代码;反之,则会执行else之后的第一条语句。
  • 注意:if后面的代码称之为真区间,else后面的代码称之为假区间。
//格式一
if(条件表达式) 
	一条PHP代码;
else 
	一条PHP代码;

//格式二
if(条件表达式){
	一条PHP代码;
	一条PHP代码;
	...
}else{
	一条PHP代码;
	一条PHP代码;
	...
}
//可以用花括号将一组语句封装成一个语句组

多向分支结构

elseif 关键字可以写成elseif ,也可以写成else if,都是合法的语法。每一个if()内都要有一个条件表达式。

//格式1:
if(条件表达式){
	一条PHP代码;
	...	
}else if (条件表达式){
	一条PHP代码;
	...	
} elseif (条件表达式){
	一条PHP代码;
	...	
}else{
	一条PHP代码;
	...	
}


//格式2:switch ...case 格式
switch(变量){
	case1:
		PHP语句
		[break];可写可不写
	case2:
		PHP语句
		[break];
	casen:
		PHP语句
		[break];
	defaultPHP语句;
};

注意:

  • switch …case 的分支结构和if…elseif … else的分支结构并不相同
  • switch …case 的分支结构可以同时执行多条分支(分支中没有break语句的出现,那么将从当前case开始一直执行到最后一行)
  • 如果使用switch … case 实现多项分支的单项选择,可以为每一个分支添加break语句即可。
  • switch … case取值取值需要从字符串和整型以及布尔值选取值,不推荐使用浮点型,不可以用 符合数据和特殊数据类型。
  • switch … case 只适用于精确值的判断,不适用于范围值的判断。

巢状分支结构

巢状分支就是单项分值,双向分支,或者多项分支中嵌套单项分值,双向分支或者多项分支

if(条件表达式){
	一条PHP代码;
	if(条件表达式){
	一条PHP代码;
	...	
}
	...	
}else if (条件表达式){
	一条PHP代码;
	if(条件表达式){
	一条PHP代码;
	}else{
	一条PHP代码;
	}
	...	
} elseif (条件表达式){
	一条PHP代码;
	if(条件表达式){
		一条PHP代码;
	}elseif(条件表达式){
		一条PHP代码;
	}else if(条件表达式){
		一条PHP代码;
	}else{
		一条PHP代码;
	}
	...	
}else{
	一条PHP代码;
	if(条件表达式){
		一条PHP代码;
		...	
	}
	...	
}

循环结构

循环就是让计算机重复执行一件事或者一段代码。

while循环

  • 只要 while 表达式的值为 TRUE 就重复执行嵌套中的循环语句。
  • 表达式的值在每次开始循环时检查,所以即使这个值在循环语句中改变了,语句也不会停止执行,直到本次循环结束。
  • 如果 while 表达式的值一开始就是 FALSE ,则循环语句一次都不会执行。
//格式1:
while (条件表达式){
	循环体内的PHP代码;
	[步长:自增自减的条件]
}    
	

//格式2:
while (条件表达式):
   	循环体内的PHP代码;
	[步长:自增自减的条件]
endwhile;
	

do…while循环

  • do-while 循环和 while 循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。
  • do-while 的循环语句保证会执行一次(表达式的真值在每次循环结束后检查)
  • do-while 循环只有一种语法:
<?php
$i  =  0 ;
do {
  	循环体内的PHP代码;
	[步长:自增自减的条件]
} while ( 条件表达式);
?> 

for循环

  • 唯一的计数性循环,效率高,循环次数固定。
//格式:
for (expr1; expr2; expr3){
	 statement;
}   
  • expr1:表示初始化变量,对变量初始化。
  • expr2:循环退出的条件,判断是否符合循环条件,符合则执行循环体的代码。
  • expr3:步长,自增自减的条件。
  • 第一个表达式( expr1 )在循环开始前无条件求值(并执行)一次。
  • expr2 在每次循环开始前求值。如果值为 TRUE ,则继续循环,执行嵌套的循环语句。如果值为 FALSE ,则终止循环。
  • expr3 在每次循环之后被求值(并执行)。
  • 每个表达式都可以为空或包括逗号分隔的多个表达式。
  • 表达式 expr2 中,所有用逗号分隔的表达式都会计算,但只取最后一个结果。
  • expr2 为空或者TRUE,意味着将无限循环下去。

foreach循环

foreach 语法结构提供了遍历数组的简单方式。foreach 只能用于数组和对象。有两种语法:

//格式1:
foreach (array_expression as $value){
	PHP循环代码
}   
 
 //格式2:
foreach (array_expression as $key => $value){
	PHP循环代码
}
  • 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset() 。
  • 由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。
  • 数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。
  • foreach 不支持用“@”来抑制错误信息的能力。

流程控制的其他语句

  • break语句:可以在任何循环体中使用break来终止循环分支结构的操作。
  • continue语句:在循环体中跳过本次循环,直接开始下次循环。
  • goto:
    • 可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。
    • goto的目标位置只能位于同一个文件和作用域。
    • 可以跳出循环或者 switch,可以用 goto 代替多层的 break。
    • goto 操作符仅在 PHP 5.3及以上版本有效。
      <?php
       for( $i = 0 , $j = 50 ;  $i < 100 ;  $i ++) {
        while( $j --) {
          if( $j == 17 ) goto  end ; 
        }  
      }
      echo  "i =  $i " ;
       end :
      echo  'j hit 17' ; // j hit 17
       ?> 
      
  • return : 如果在一个函数中调用 return 语句,将立即结束此函数的执行并将它的参数作为函数的值返回。
    • 如果在全局范围中调用,则当前脚本文件中止运行。
    • 如果当前脚本文件是被 include 的或者 require 的,则控制交回调用文件。
    • 如果当前脚本是被 include 的,则 return 的值会被当作 include 调用的返回值。
  • require、require_once / include 、include_once :
    • 在脚本执行期间包含并运行指定文件,require_once 、include_once只运行一次。
    • require 和 include 几乎完全一样,除了处理失败的方式不同之外。
      • require 在出错时将导致脚本中止。
      • include 只产生警告( E_WARNING ),脚本会继续运行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值