PHP流程控制
流程控制对于任何一门编程语言来说都是至关重要的,我们正在学习的PHP也不例外。由于 PHP 的大部分语法都继承了C语言的特点,因此在流程控制方面,PHP 有着和C语言类似的流程控制。任何一门程序设计语言中,都需要支持满足程序结构化所需要的三种基本结构:顺序结构、分支结构(选择结构或条件结构)和循环结构。顺序结构的语句主要是赋值语句、输入/输出语句等,所以对于顺序结构就不必过多介绍了。本文介绍的就是分支结构语句:if else语句、switch case语句。
分支结构
顺序结构可以帮助解决赋值、计算、输入/输出等问题,但不能先做判断再选择执行赋值语句、计算语句、输入/输出语句等问题。对于要先做判断再选择的问题就要使用分支结构(又称为选择结构或条件结构)。
PHP if else语句
if结构是单一条件分支结构。
if (判断条件) {
语句块;
}
# 注意:语句块只有一条语句。可以省略{}
<?php
$a = 10;
$b = 20;
if($a < $b ){
echo '$a小于$b';
}
// -----------------注意:语句块只有一条语句。可以省略{}-----
if($a < $b ) echo '$a小于$b';
else子句,else语句是if语句的子句,必须和if一起使用,不能单独存在。
if (判断条件) {
语句块;
} else {
语句块;
}
# 注意:语句块只有一条语句。可以省略{}
<?php
$a = 10;
$b = 20;
if ($a > $b ) {
echo '$a小于$b';
} else {
echo '$a大于$b';
}
// -----------------注意:语句块只有一条语句。可以省略{}。-----
if($a < $b ) echo '$a小于$b'; else echo '$a大于$b';
elseif子句。必须和if一起使用,不能单独存在。也可以写成“else if”(两个单词),它和“elseif”(一个单词)的行为完全一样。
注意: 必须要注意的是
elseif
与else if
只有在类似上例中使用花括号的情况下才认为是完全相同。如果用冒号来定义if
/elseif
条件,那就不能用两个单词的else if
,否则 PHP 会产生解析错误。
if (判断条件) {
语句块;
} elseif () {
语句块;
} else {
语句块;
}
# 注意:语句块只有一条语句。可以省略{}
<?php
$a = 20;
$b = 20;
if ($a > $b ) {
echo '$a小于$b';
} elseif ($a == $b) {
echo '$a等于$b';
} else {
echo '$a大于$b';
}
// -----------------注意:只能写一条语句。-----
if($a < $b ) echo '$a小于$b'; elseif($a == $b) echo '$a等于$b'; else echo '$a大于$b';
if
语句可以无限层地嵌套在其它 if
语句中,这给程序的不同部分的条件执行提供了充分的弹性。
<?php
$a = 20;
$b = 20;
if($a == $b ){
$a = 10;
if($a != $b)
echo '$a不等于$b';
else
echo '$a等于$b';
}else{
echo '$a不等于$b';
}
多多练习,运用自如。
PHP switch case语句
witch 语句由一个表达式和多个 case 标签组成,case 标签后紧跟一个代码块,case 标签作为这个代码块的标识。
switch(表达式){
case 值 1:
语句块 1;
break;
case 值 2:
语句块 2;
break;
... ...
case 值 n:
语句块 n;
break;
default:
语句块 n+1;
}
<?php
//----典型示例---------
$week = date('D');
switch($week){
case 'Mon':
echo '星期一';
break;
case 'Tue':
echo '星期二';
break;
case 'Wed':
echo '星期三';
break;
case 'Thu':
echo '星期四';
break;
case 'Fri':
echo '星期五';
break;
case 'Sat':
echo '星期六';
break;
case 'Sun':
echo '星期日';
break;
}
?>
-
和 if 语句不同的是,switch 语句后面的控制表达式的数据类型只能是整型或字符串,不能是boolean型。通常这个控制表达式是一个变量名称,虽然PHP是弱类型语言,在switch后面控制表达式的变量可以是任意类型数据,但为了保证匹配执行的准确性,最好只使用整型或字符串中的一种类型。
-
和if语句不同的是,switch语句后面的花括号是必须有的。而switch语句中各case标签前后代码块的开始点和结束点非常清晰,因此完全没有必要为case后的代码块加花括号。
-
case语句的个数没有规定,可以无限增加。但case标签和case标签后面的值之间应有一个空格,值后面必须有一个冒号,这是语法的一部分。
-
switch匹配完成以后,将依次逐条执行匹配的分支模块中的语句,直到switch结构结束或者遇到break语句才停止执行。所以,如果一条分支语句的后面没有写上break语句,则程序将继续执行下一条分支语句的内容。
<?php $i=0; switch ($i) { case 0: echo "i = 0 "; case 1: echo "i = 1 "; } //结果:i = 0 i = 1 $i=0; switch ($i) { case 0: echo "i = 0 "; break; case 1: echo "i = 1 "; break; } //结果:i = 0
-
与if语句中的else类似,switch语句中的default标签直接在后面加上一个冒号,看似没有条件,其实是有条件的,条件就是“表达式”的值不能与前面任何一个case标签后的值相等,这时才处理default分支中的语句。default标签和if中的else子句一样,它不是switch语句中必需的,可以省略。在PHP 7之前,switch语句中允许多个default默认值,从PHP 7开始,只能有一个default默认值,否则会产生fatal级别错误。
-
在
switch
语句中条件只求值一次并用来和每个case
语句比较。在elseif
语句中条件会再次求值。如果条件比一个简单的比较要复杂得多或者在一个很多次的循环中,那么用switch
语句可能会快一些。 -
注意:continue语句作用到 switch 上的作用类似于
break
。如果在循环中有一个 switch 并希望 continue 到外层循环中的下一轮循环,用continue 2
。 -
允许使用分号代替 case 语句后的冒号。
提示
(。◕ˇ∀ˇ◕)遇见就是缘分,如果觉得对自己有帮助,喜欢的可以收藏或者留下一个赞,谢谢支持。
关注我编程不迷路。