批改状态:合格
老师批语:看别人写代码很轻松, 甚至对一些地方还吐槽, 轮到自己写, 才发现写一行错一行, 这就是动手与动口的区别, 所以学编程一定要多动手,少动口, 用代码说话
<?php// 运算符// 取模/取余数var_dump(15%6);// ++,--,只能用在变量上$n = 10;// ++在变量后面, 先引用变量的值, 再将变量执行加1的运算// var_dump($n++);// var_dump($n);// $n = $n + 1;// var_dump($n--);// var_dump(--$n);// var_dump($n);//. 字符串连接// echo 'a' . 'b' . '<br>';// echo 'abc' . 28 . '<br>';// $n = $n + 10;$n *= 10;// $n =$n *10;var_dump($n);
<?php$a = "我在学习PHP!";$b = &$a;$a = "我学习PHP!"; // 改变变量a的值$c = &$a;echo $b."<br />";echo $c."<br />";//变量 $b 和 $c都是一样指向$a的内存
== 返回布尔值=== 全等,值相等并且类型也相等,返回True!= 不等 如果两边不等,返回True<> 不等 如果两边不等,返回True!== 非全等 只要是值或者类型不等就返回True><<=>=
<?php// 比较运算符返回布尔类型的值var_dump(10 > 20);// 是否相等==, 是否全等===// ==: 只判断值是否相等, 不判断类型// 当==二边的类型不同时,会发生类型的自动转换// var_dump(10 == (int)'10');// === 全等, 不仅值要相等, 类型也要相等var_dump(10 === '10');echo '<hr>';// 太空船 <=>var_dump(10 <=> 20);// -1 < 0, 说明 10 小于 20var_dump(10 <=> 5);// 1 > 0, 说明 10 大于 5var_dump(10 <=> 10);// 0, 说明 相等echo '<hr>';// && 理解为乘法, true==>1, false==>0var_dump((3<4) && 5>8);// var_dump(true && false);// && 理解为加法, true==>1, false==>0var_dump((3<4) || 5>8);// var_dump(true || false);// $name = 'peter';// $name = 'admin';if (@$name && $name==='admin') {echo '欢迎您';} else {echo '未登录';}echo '<hr>';// ? : 简化双分支if$price = 900;if ($price > 1000) echo '太贵了'; else echo '真便宜';// 条件 ? true : falseecho $price > 1000 ? '太贵了' : '真便宜';echo '<hr>';// ?? null合并运算符
| 序号 | 类型 | 语法 | 模板语法 |
|---|---|---|---|
| 1 | 单分支 | if(){...} |
if(): ... endif; |
| 2 | 双分支 | if(){...} else {...} |
if(): ... else: ... endif; |
| 3 | 多分支 | if(){...} elseif {...} else {...} |
if(): ... elseif: ... else: ... endif; |
| 4 | switch |
switch() {case: ... break...} |
switch(): ...endswitch; |
// 单分支语法$age=17;if ($age<18) {echo '未满十八岁未成年你是一个小屁孩';}//模板写法$age=17;if ($age<18) :echo '未满十八岁未成年你是一个小屁孩';endif;// 双分支语法$age=24;if ($age<18) {echo '未满十八岁未成年你是一个小屁孩';} else {echo '您已满十八岁符合标准';}//模板写法$age=24;if ($age<18) :echo '未满十八岁未成年你是一个小屁孩';else :echo '您已满十八岁符合标准';endif;//多分支语法if ($age<18) {echo '未满十八岁你是一个小屁孩';} elseif ($age>60) {echo '超过六十岁你是老头';} elseif ($age>100) {echo '可能已经挂了';}else {echo '花样年华';}//模板语法if ($age<18) :echo '未满十八岁你是一个小屁孩';elseif ($age>60) :echo '超过六十岁你是老头';elseif ($age>100) :echo '可能已经挂了';else :echo '花样年华';endif;/ 4. switch: 简化多分支$amount = 2300;// 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;// }// 模板语法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.6;$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;
| 序号 | 类型 | 语法 | 模板语法 |
|---|---|---|---|
| 1 | 入口判断型 | while(){...} |
while(): ... endwhile; |
| 2 | 出口判断型 | do {...} while(); |
do : ... while(); |
| 3 | 计数型 | for(){...} |
for () : ... endfor; |
循环控制关键字:
| 序号 | 关键字 | 描述 |
|---|---|---|
| 1 | continue |
终止本次循环,提前进入下一轮 |
| 2 | break |
跳出本层循环 |
<?php# 循环$curriculum = ['语文', '数学', '英语', '地理', '历史'];// 1. 入口判断型echo current($curriculum);next($curriculum);echo current($curriculum);next($curriculum);echo current($curriculum);echo '<hr>';reset($curriculum);// $subject = current($curriculum): 循环条件// while ($subject = current($curriculum)) {// echo $subject . '<br>';// // 更新循环条件, 没有这个语句, 会进入死循环// next($curriculum);// }// reset($curriculum);// 模板语法while ($subject = current($curriculum)) :echo $subject . '<br>';// 更新循环条件, 没有这个语句, 会进入死循环next($curriculum);endwhile;echo '<hr>';// 2. 出口判断型reset($curriculum);do {$subject = current($curriculum);echo $subject . '<br>';// 更新循环条件, 没有这个语句, 会进入死循环next($curriculum);} while ($subject = current($curriculum));// 无论条件是否为真,至少会执行一次// 没有对应的模板语法// 3. 计数型echo '数组中有 : ' . count($curriculum);echo '<hr>';// $i = 0;循环变量初始化// $i < count($curriculum): 循环条件// $i++: 更新循环条件for ($i = 0; $i < count($curriculum); $i++) {// echo $curriculum[$i] . '<br>';}// 模板语法for ($i = 0; $i < count($curriculum); $i++) :// echo $curriculum[$i] . '<br>';endfor;echo '<hr>';reset($curriculum);// continue: 终止当前循环,提前进入下一轮$curriculum = ['语文', '数学', false, '英语', null, '地理', '历史'];// while ($subject = current($curriculum)) :// echo $subject . '<br>';// next($curriculum);// endwhile;for ($i = 0; $i < count($curriculum); $i++) :// 跳过空数据if (!$curriculum[$i]) continue;echo $curriculum[$i] . '<br>';// break; 跳出本层if ($curriculum[$i] === '地理') break;endfor;
运算符和流程控制看似不起眼,但是在实际操作中,如果在逻辑层次不清晰的情况下,操作起来就知道锅儿是铁打的
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号