Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:优秀的商业代码,几乎一半是注释
//运算符
//取模/取余数运算符
var_dump(15%6);
echo '<hr>';
// 递增递减 ++,--,只能用在变量上 var_dump(10++);是错误的
$n = 10;
// ++在变量后面, 先引用变量的值, 再将变量执行加1的运算
var_dump($n++);
var_dump($n);
echo '<hr>';
//.字符转链接
echo 'a' . 'b' . '<br>';
//不是字符串会自动转换
echo 'abc' . 28 . '<br>';
echo '<hr>';
//赋值
// $n = $n + 10;此用法是老用法 下方是运算符用法
$n += 10;
var_dump($n);
echo '<hr>';
//.=字符串拼接 通过下面代码学习html在php中写法
$user = ['110', '朱老师', 'PHP'];
$table .= '<table border="1">';
$table .= '<tr>';
$table .='<td>'.$user[0] . '</td>';
$table .= '<td>'.$user[1] . '</td>';
$table .= '<td>'.$user[2] . '</td>';
$table .= '</tr>';
$table .= '</table>';
echo $table;
echo '<hr>';
//比较运算符,返回布尔值
var_dump(10 > 20);
// ==判断是否相等 返回10和字符串10相等 ===判断是否全等 返回不相等 ''这个里面的内容时字符串
// ==只判断值是否相等, 不判断类型 会发生自动类型转换 建议使用全等===
var_dump(10 == '10');
var_dump(10 === '10');
echo '<hr>';
// 太空船 <=> 只返回三种返回值 -1 0 和 1 小于返回-1 等于返回0 大于返回1
var_dump(10 <=> 20);
var_dump(10 <=> 5);
var_dump(10 <=> 10);
echo '<hr>';
//逻辑运算符 &两边都是运算符 &理解为乘法 ||理解为加法
var_dump((3<4) && 5>8);
var_dump(true && false);
var_dump(true || false);
echo '<hr>';
// if是如果 else是否则 &&理解为是 if后面@$name是判断是否存在$name 存在后再判断是否全等 ===使用全等 如果使用=那么在$name内容不是admin的时候也会验证通过
$name='admin';
if (@$name && $name==='admin') {
echo '欢迎您';
} else {
echo '未登录';
}
echo '<hr>';
// 三元运算符 ? : 简化双分支if
$jiage ='1000';
if ($jiage < 500) {
echo '太贵了';
} else {
echo '太便宜了';
}
//上面的代码可以简化 下面是简化的 这种简化的写法不方便加更多的属性
if ($jiage < 500) echo '太贵了'; else echo '太便宜了';
// 条件 ? true : false 下面是三元符写法
echo $jiage > 1000 ? '太贵了' : '真便宜';
echo '<hr>';
// ?? null合并运算符 isset是如果
//设置变量默认值
$password = '123abc';
//这是原写法 isset是如果password则输入它 ?是如果没有passwrd 则输入root
$password = isset($password) ? $password : 'root';
//下面是三元符写法
$password = $password ?? 'root';
echo $password;
echo '<hr>';
//在所有的错误面前加@ 可以屏蔽错误 语法错误不能屏蔽 程序上线的时候应屏蔽错误 否则会泄露数据库密码等信息
@include 'hello.php';
//流程控制
# 单分支
// 购买金额
$amount = 5500;
// 实际支付
$payment = $amount;
// 下方代码表示如果价格大于5000就打9这 这种大括号在html混编的时候不方便 下方介绍如果去掉大括号
if ($amount > 5000) {
$payment = $amount * 0.9;
}
// 有一种替代语法 : 模板语法, 用在与html代码混编的时候
// 模板语法的目标是: 干掉大括号 大括号开始改成: 大括号介绍改成endif;
if ($amount > 5000) :
$payment = $amount * 0.1;
endif;
echo '实际支付: ' . $payment . '<br>';
echo '<hr>';
// 双分支模板语法 如果支付价格低于5000 就不打折 第二分支输出原价
$amount = 3500;
$payment = $amount;
if ($amount > 5000) :
$payment = $amount * 0.1;
else:
$payment = $amount;
endif;
echo '实际支付: ' . $payment . '<br>';
echo '<hr>';
// 3. 多分支 如果价格大于5000 小于 10000 那么打9折
// 第二分支表示 如果价格大于等于10000 并且小于20000 打7这
// 第三分支表示 如果价格大于20000 打五折
// 第四行表示 如果小于5000不打折
$amount = 15500;
if ($amount > 5000 && $amount < 10000) :
$payment = $amount * 0.9;
elseif ($amount >= 10000 && $amount < 20000) :
$payment = $amount * 0.7;
elseif ($amount >= 20000) :
$payment = $amount * 0.5;
else :
$payment = $amount;
endif;
echo '实际支付: ' . $payment . '<br>';
echo '<hr>';
// 4. switch: 简化多分支
$amount = 5300;
// 模板语法
switch (true) :
case $amount > 5000 && $amount < 10000:
$payment = $amount * 0.9;
// break: 跳出当前分支 不写的话不管多少钱都是打最高折扣
break;
case $amount >= 10000 && $amount < 20000:
$payment = $amount * 0.7;
break;
case $amount >= 20000:
$payment = $amount * 0.5;
break;
default:
$payment = $amount;
endswitch;
echo '实际支付: ' . $payment . '<br>';
echo '<hr>';
// switch 更常用的场景是单值判断 显示出目前的折扣率
$discount = 0.8;
$amount = 10000;
switch ($discount):
case 0.9:
$payment = $amount * 0.9;
break;
case 0.8:
$payment = $amount * 0.8;
break;
default:
die('不支持的折扣率');
endswitch;
echo '实际支付: ' . $payment . ', 折扣率: '. $discount;
echo '<hr>';
//循环
$cities = ['武汉', '合肥', '南京', '杭州', '上海'];
//不循环写法
echo current($cities);
next($cities);
echo current($cities);
next($cities);
echo current($cities);
echo '<hr>';
//循环写法 1. 入口判断型
// while是循环 current是获取当前值 next是移到下一个值
while ($city = current($cities)) :
echo $city . '<br>';
// 更新循环条件, 没有这个语句, 会进入死循环 试了下浏览器差点卡死
next($cities);
endwhile;
echo '<hr>';
// 2. 出口判断型 do为开头 reset重置的意思
reset($cities);
do {
$city = current($cities);
echo $city . '<br>';
// 更新循环条件, 没有这个语句, 会进入死循环
next($cities);
} while ($city = current($cities));
// 无论条件是否为真,至少会执行一次
// 没有对应的模板语法
echo '<hr>';
// 3. 计数型 count输入有几个数据
echo '数组中有 : ' . count($cities);
echo '<hr>';
// $i = 0;循环变量初始化
// $i < count($cities): 循环条件
// $i++: 更新循环条件
for ($i = 0; $i < count($cities); $i++) :
echo $cities[$i] . '<br>';
endfor;
echo '<hr>';
reset($cities);
// continue: 终止当前循环,提前进入下一轮
$cities = ['武汉', '合肥', false, '南京', null, '杭州', '上海'];
// while ($city = current($cities)) :
// echo $city . '<br>';
// next($cities);
// endwhile;
for ($i = 0; $i < count($cities); $i++) :
// 跳过空数据
if (!$cities[$i]) continue;
echo $cities[$i] . '<br>';
// break; 跳出本层
if ($cities[$i] === '杭州') break;
endfor;