顺序控制:程序默认的执行顺序
分支控制:单分支,双分支,多分支
**单分支:**
~~~
if(true){
echo 'abc';
}
//或者
if(true) echo 'abc';
~~~
**单分支替代语法**
在模板中使用
~~~
<?php if ($a < 0): ?>
aaaaaaaaaaaaaaa
<?php else:?>
bbbbbbbbbbbb
<?php endif; ?>
~~~
### if...else分支
### 多分支
~~~
if($age>18){
echo '大于18';
}else if($age>10){
echo '小于18';
}else if($age>1){
echo '小于1';
}
~~~
~~~
<?php if ($a < 10): ?>
<h1>小于10</h1>
<?php elseif($a>10):?>
<h1>大于10</h1>
<?php else:?>
<h1>相等</h1>
<?php endif; ?>
~~~
### switch控制
1. switch和case配合才能使用
2. switch遇到break才会退出,不然会继续执行下一个case
3. 匹配不到就执行default
4. case的值可以是任何基本类型的表达式
5. case下面的表达式可以为空,这样会转移到下一个case
6. case后面的:可以为分号
`case false`
~~~
case 'a';
case 'b';
echo 'a和b都运行这句';
~~~
**switch和if选择**
* 几个具体的值,用switch
* 值是范围用if
### for循环
* 本质上和while循环是一样的,有初始值,有判断条件,有步长
* for循环视图上比while好理解
~~~
for($i=0,$j=0;$i<10,$j<-4;$i++,$j--){
echo 'hello'.$i.'<br/>';
}
~~~
**另一种写法**
空语句,结构类型while
~~~
$i=9;
for(;$i<10 && $i>5;){
echo '值为'.$i.'<br/>';
$i--;
}
~~~
### while循环
* while是先判断再循环
* do...while先执行一次,再判断
~~~
$a=0;
while($a<10){
echo $a.'<br/>';
$a++;
}
~~~
### do...while循环
* 用的没有for循环多
* 结构和while循环一样,只是在{}前面加了一个do
### break语句
* 结束当前的循环。
* 可以用于:for,foreach,while,do-while,switch
* break可以接受一个参数,跳出几重循环
~~~
$i=0;
while(true){
$val=rand(0,1000);
$i++;
if($val==99){
echo $i;
break;
}
}
~~~
~~~
for($i=0;$i<10;$i++){
echo $i;
if($i==9){
break;
}
}
~~~
![](https://box.kancloud.cn/96ed6631b2825ea3841f7809247643d9_266x230.png)
### continue语句
* 跳过本次循环中剩余代码,跳出本次循环。执行下一次循环
* continue接收一个参数,跳出几重循环
~~~
for($i=0;$i<10;$i++){
if($i==5){
continue;
}
echo $i;
}
~~~
![](https://box.kancloud.cn/233e82379a649a895935787d4fa8e1d3_259x110.png)
### goto语句
* goto只能用于同一个作用域,即无法跳出一个函数或类方法,也无法跳入到另一个函数
* 一般用goto跳出循环,替代多层break;
~~~
goto a;
echo 'aa';
a:
echo 'bb';
~~~