Correcting teacher:Guanhui
Correction status:qualified
Teacher's comments:三种分支和三种循环,一定要根据场景合理使用!
比较运算返回布尔值
var_dump(100>250);
var_dump(50 == '50');
var_dump(100 === '100');
echo '<br>';
太空船运算符
第一个操作数小于第二个操作数为-1,大于为1,等于为0.
var_dump(100 <=>250);
var_dump(100 <=>50);
var_dump(100 <=>100);
echo '<hr>';
逻辑运算符
&&:与运算符,两边运算全部为true,否则返回false。
||:或运算符,只要一个为true,返回就为true。
var_dump((100>250)&&(10>15));
var_dump((5<20)||(5>8));
echo '<hr>';
短路求值
if..else..条件判断,如果第一条语句为false,则执行else里面的语句;如果第一条件语句为true,则执行第一条语句。
$AA=25;
if ($AA && $AA === 25)
echo '你赚钱了';
else
echo '你亏钱了';
echo '<hr>';
$AA=23;
if ($AA && $AA === 25)
echo '你赚钱了';
else
echo '你亏钱了';
echo '<hr>';
三元运算符
简化双分支,三个表达式,有两个运算符。
if ($KG > 50) echo '太重了';
else echo '太轻了';
echo '<hr>';
$KG = 30;
echo ($KG >50) ? '太重了':'太轻了';
echo '<hr>';
null合并运算符
$BB = 25;
echo isset($BB) ? ($BB) : 'kao';
echo '<hr>';
unset($BB);
echo $BB ?? 'kao';
当流程控制语句中只有一行代码的时候,可以省略大括号。
模板语法: 就是干掉流程控制中的大括号,将起始大括号用冒号代替,将结束大括号用特殊关键字代替
单分支
$AA = 25;
$BB = $AA;
if ($AA>=20) $BB =$AA*0.2;
if ($AA >= 20) : $BB = $AA *0.2;endif ;
echo '实际重量:',$BB ,'<br>';
echo '<hr>';
二分支
$AA = 15;
if ($AA >= 20){
$BB = $AA*0.2;
}
else {
$BB = $AA;
}
echo '实际重量:',$BB ,'<br>';
$AA = 60;
if ($AA >= 20):
$BB = $AA*0.2;
else:
$BB =$AA;
endif;
echo '实际重量:',$BB ,'<br>';
echo '<hr>';
多分支
$AA = 280;
if ($AA > 50 && $AA < 100 ){
$BB = $AA * 0.8;
}elseif ($AA > 100 && $AA < 200) {
$BB = $AA * 0.7;
}elseif ($AA > 200 && $AA < 300) {
$BB = $AA *0.6;
}else{
$BB = $AA;
}
echo '实际重量:',$BB ,'<br>';
echo '<hr>';
$AA = 180;
if ($AA > 50 && $AA < 100 ):
$BB = $AA * 0.8;
elseif ($AA > 100 && $AA < 200):
$BB = $AA * 0.7;
elseif ($AA > 200 && $AA < 300):
$BB = $AA *0.6;
else:
$BB = $AA;
endif;
echo '实际重量:',$BB ,'<br>';
echo '<hr>';
switch简化多分支
$AA = 280;
switch (true){
case ($AA > 50 && $AA < 100 ):
$BB = $AA * 0.8;
break;
case ($AA > 100 && $AA < 200):
$BB = $AA * 0.7;
break;
case ($AA > 200 && $AA < 300):
$BB = $AA *0.6;
break;
default:
$BB = $AA;
}
echo '实际重量:',$BB ,'<br>';
echo '<hr>';
$AA = 1.4;
$cc = 200;
switch ($AA){
case 1.5:
$dd = $cc *1.5;
break;
case 1.4:
$dd = $cc * 1.4;
break;
case 1.3:
$dd = $cc *1.3;
break;
default:
die('不正常');
}
echo '实际重量:',$dd ,'<br>';
echo '<hr>';
$AA = 1.4;
$cc = 200;
switch ($AA):
case 1.5:
$dd = $cc *1.5;
break;
case 1.4:
$dd = $cc * 1.4;
break;
case 1.3:
$dd = $cc *1.3;
break;
default:
die('不正常');
endswitch;
echo '实际重量:',$dd ,'<br>';
echo '<hr>';
判断型循环: 入口判断型 while(条件) {…}
进入循环代码之前进行判断,只有条件为真才执行循环体
$fruits = ['苹果','香蕉','葡萄','西瓜','荔枝'];
echo current($fruits);
next($fruits);
echo current($fruits);
next($fruits);
echo current($fruits);
next($fruits);
echo current($fruits);
next($fruits);
echo current($fruits);
while($fruit = current($fruits)){
echo $fruit, '<br>';
next($fruits);
}
reset($fruits);
while($fruit = current($fruits)){
echo $fruit, '<br>';
next($fruits);
}
出口判断型:do{….}while(条件)
循环体内必须要有更新循环条件的语句,否则进入死循环.
do - while 没有对应的模板语法。
do{
echo $fruit, '<br>';
next($fruits);
}while($fruit = current($fruits));
计数型循环: for (循环变量的初始化; 循环条件; 更新循环条件){….}
echo count($fruits);
for ($i = 0; $i < count($fruits);$i++){
echo $fruits[$i], '<br>';
}
// 模板语法
for ($i = 0; $i < count($fruits);$i++):
echo $fruits[$i], '<br>';
endfor;
for ($i = 0; $i < count($fruits);$i++):
// 输出拦截,break提前终止循环
if ($i > 2) break;
echo $fruits[$i], '<br>';
endfor;
for ($i = 0; $i < count($fruits);$i++):
//有选择性的输出,跳过一部分元素
if ($i === 3) continue;
echo $fruits[$i], '<br>';
endfor;