Correcting teacher:Guanhui
Correction status:qualified
Teacher's comments:写的挺好!刚开始都有这种云里雾里的感觉,不过随着新知识和新概念的增加到一定的程度,你就会恍然大悟,然后一切都是那么的简单!
<?php
// 单分支(if):if(条件表达式){条件语句,当为单条的时候,可以省略大括号}
// 当条件表达式为true时 执行条件语句,反之不执行
$age = 25;
if($age > 20 && $age < 30){
echo '复合条件,执行。下面一行是简写','<hr>';
}
$age = 20;
if ($age > 20 && $age < 30) echo '不符合条件,所以不执行';
// 双分支(else从句 ):if(条件表达式){条件语句}else{条件语句}
// 当条件表达式为true时 执行条件语句,当为false时 执行else中的条件语句
$size = 27;
if ($size >=27) :
echo '27寸是我喜欢的最小尺寸';
else :
echo '屏幕尺寸太小了';
endif;
echo '<br>';
$size = 19;
if ($size >=27) :
echo '27寸是我喜欢的显示尺寸';
else :
echo '屏幕尺寸太小了';
endif;
echo '<hr>';
//三元运算符 简化 ? :
$size = 19;
echo $size >= 27 ? '27寸是我喜欢的显示尺寸':'屏幕尺寸太小了';
echo '<hr>';
// 多分支(elseif子句):必须右默认分支else(){}
//if(条件表达式1){条件语句1}elseif(条件表达式2){条件语句2}...elseif(条件语句n){条件语句n}else(条件表达式){默认条件语句}
$performance = 50;
if ($performance >=60 && $performance <80) :
echo '良';
elseif ($performance >=80 && $performance <= 90) :
echo '优';
elseif ($performance === 100) :
echo '完美';
else :
$performance < 60 ;
echo '要加油了','<br>';
endif;
/*工作原理:首先对一个简单的表达式 n(通常是变量)进行一次计算。
将表达式的值与结构中每个 case 的值进行比较。
如果存在匹配,则执行与 case 关联的代码。代码执行后,
使用 break 来阻止代码跳入下一个 case 中继续执行。
default 语句用于不存在匹配(即没有 case 为真)时执行。
switch (n)
{
case label1(代表条件语句1):
如果 n=label1,此处代码将执行;
break;
case label2(代表条件语句2):
如果 n=label2,此处代码将执行;
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
*/
// 用switch语句来简化 多分支:
$performance = 100;
switch($performance):
case $performance >=60 && $performance <80 :
echo '良';
break;
case $performance >=80 && $performance <90 :
echo '优';
break;
case $performance === 100 :
echo '完美';
break;
default :
echo '要加油了';
endswitch;
echo '<br>';
// switch 通常用在单值判断中。
$colour = 'red';
switch($colour) :
case $colour === 'red':
echo '喜欢红色';
break;
case $colour === 'green':
echo '喜欢绿色';
break;
case $colour === 'black':
echo '喜欢黑色';
break;
default:
echo '你喜欢的颜色不是红 绿 黑';
endswitch;
<?php
/*
for 循环
语法:
for (初始值; 条件; 增量)
{
要执行的代码;
}
初始值:主要是初始化一个变量值,用于设置一个计数器(但可以是任何在循环的开始被执行一次的代码)。
条件:循环执行的限制条件。如果为 TRUE,则循环继续。如果为 FALSE,则循环结束。
增量:主要用于递增计数器(但可以是任何在循环的结束被执行的代码)。
上面的初始值和增量参数可为空,或者有多个表达式(用逗号分隔)。
*/
// 遍历数组 首选要知道有多少个元素
// 1.for循环方式--只能用于纯索引数组
$mountains = ['恒山','嵩山','衡山','华山','泰山'];
// 数组长度 count()
echo count($mountains),'<hr>';
for ($i = 0; $i < count($mountains); $i++) :
echo $mountains[$i],'<br>';
endfor;
echo '<hr>';
for ($i = 0; $i < count($mountains); $i++) :
// 输出拦截, break 提前终止循环
if ($i > 1) break;
echo $mountains[$i],'<br>';
endfor;
echo '<hr>';
for ($i = 0; $i < count($mountains); $i++) :
// 有选择性输出,跳过一部分元素continu
if ($i === 3) continue;
echo $mountains[$i],'<br>';
endfor;
echo '<hr>';
// 判断型 循环: 1.入口判断型while(条件为真){执行的代码}
// current(): 获取当前数组元素的值,
echo current($mountains),'<hr>';
while ($mountain = current($mountains)) :
echo $mountain,'<br>';
//next(): 当前数组指针下移
next($mountains);
endwhile;
echo '<hr>';
// 2.出口判断型do {条件语句} while(条件) 无论条件是否为true,都会先执行一遍
//do{} while 没有对应的模板语法 也不常用
// 指针复位
reset($mountains);
do {
echo $mountain,'<br>';
//next(): 当前数组指针下移
next($mountains);
} while ($mountain = current($mountains));
// 输出结果少了恒山,因为第一次输出$mountain时 并没有值 ,
//返回int(-1)
var_dump(10 <=> 20);
//返回int(1)
var_dump(10 <=> 5);
//返回int(0)
var_dump(10 <=> 10);
// && :两边表达式,除非全部为true,否则返回false
var_dump((10 > 20) && (5 > 8));
// ||:两边表达式只要有一个为true,则返回true
var_dump((10 < 20) || (5 > 8));
var_dump(true || false);
三元运算符语法:
条件 ? 结果1 : 结果2 说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2。可以用来简化双分支
短路求值
// 如果第一个表达式(isset($username)),为false,则直接执行 else 分支,不会再去计算$username === 'admin'
if ( isset($username) && $username === 'admin')
echo '欢迎您';
else
echo '未登录先登录','<hr>';
// 用户名:root, 不设置密码 默认密码就是root
$password = sha1('123456');
echo isset($password) ? $password : 'root';
echo "<hr>";
// isset() + 三元运算 = 变量默认值
$password = '123456';
unset($password);
// ?? 代替isset()
echo $password ?? 'root';