运算符
1. 算术运算符
| 序号 |
运算符 |
示例 |
描述 |
| 1 |
+ |
$a+$b |
$a与$b 的和 |
| 2 |
- |
$a-$b |
$a与$b 的差 |
| 3 |
* |
$a*$b |
$a与$b 的积 |
| 4 |
/ |
$a/$b |
$a与$b 的商 |
| 5 |
% |
$a%$b |
$a与$b 的余(模) |
| 6 |
++ |
$a++/++$a |
先用再加/先加再用 |
| 7 |
-- |
$a--/--$a |
先用再减/先减再用 |
| 8 |
** |
2**4 |
幂运算:2 的 4 次方 |
$a++=>$a = $a + 1, $a--=>$a = $a - 1**: 幂运算需要 php5.6+版本
2. 字符串运算符
| 运算符 |
示例 |
描述 |
. |
$str1 . $str2 |
连接运算,返回连接之后的字符串 |
3. 赋值运算符
| 序号 |
运算符 |
示例 |
描述 |
| 1 |
= |
$a = 10 |
将表达式的值赋给变量 |
| 2 |
+= |
$a += 10 |
$a = $a + 10; |
| 3 |
-= |
$a -= 10 |
$a = $a - 10; |
| 4 |
*= |
$a *= 10 |
$a = $a * 10; |
| 5 |
/= |
$a /= 10 |
$a = $a / 10; |
| 6 |
%= |
$a %= 10 |
$a = $a % 10; |
| 7 |
.= |
$a .= 'a' |
$a = $a . 'a'; |
4. 比较运算符
| 序号 |
运算符 |
示例 |
描述 |
| 1 |
> |
$a > $b |
大于 |
| 2 |
>= |
$a >= $b |
大于或等于 |
| 3 |
< |
$a < $b |
小于 |
| 4 |
<= |
$a <= $b |
小于或等于 |
| 5 |
== |
$a == $b |
等于 (值相等即可) |
| 6 |
=== |
$a == $b |
全等于(二边值与类型全等) |
| 7 |
!= |
$a != $b |
不相等 |
| 8 |
!== |
$a !== $b |
不全等 |
| 9 |
<=> |
$a <=> $b |
太空船php7+ |
- 比较运算符: 返回布尔值,常用于流程控制中(
if/while/for...) <=>: 也叫组合比较符, 例如$a <=> $b, 有三种返回结果
| 序号 |
运算 |
结果 |
| 1 |
$a > $b |
返回>0的整数 |
| 2 |
$a < $b |
返回<0的整数 |
| 3 |
$a = $b |
返回=0的整数 |
5. 逻辑运算符
| 序号 |
运算符 |
示例 |
描述 |
| 1 |
&& |
$a && $b |
逻辑与 |
| 2 |
` |
|
` |
`$a |
|
$b` |
逻辑或 |
| 3 |
! |
!$a |
逻辑非 |
| 4 |
xor |
$a xor $b |
逻辑异或 |
6. 三元运算符
| 序号 |
运算符 |
示例 |
描述 |
场景 |
| 1 |
?: |
$a ?: $b |
仅判断表达式true/false |
简化双分支 |
| 2 |
?? |
$a ?? $b |
判断变量存在且不为 null |
设置默认值 |
7. 错误屏蔽符
| 运算符 |
示例 |
描述 |
场景 |
@ |
@(10/0) |
屏蔽所有运行错误 |
线上生产环境 |
示例

<?phperror_reporting(E_ALL);// 运算符// 取模/取余数// 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);// 比较运算符返回布尔类型的值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合并运算符// 设置变量默认值$password = '123abc';// $password = isset($password) ? $password : 'root';$password = $password ?? 'root';echo $password;echo '<hr>';echo @$username;@(10/0);// 语法 错误是不能被屏蔽// @incle 'hello.php';
流程控制
1. 分支结构
| 序号 |
类型 |
语法 |
模板语法 |
| 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; |
2. 循环结构
| 序号 |
类型 |
语法 |
模板语法 |
| 1 |
入口判断型 |
while(){...} |
while(): ... endwhile; |
| 2 |
出口判断型 |
do {...} while(); |
do : ... while(); |
| 3 |
计数型 |
for(){...} |
for () : ... endfor; |
循环控制关键字:
| 序号 |
关键字 |
描述 |
| 1 |
continue |
终止本次循环,提前进入下一轮 |
| 2 |
break |
跳出本层循环 |
示例

<?php# 分支结构// 存款本金$Capital = 10000;// 本息合计$Interest = $Capital;//1. 单分支// if (Capital > 5000) {// $Interest = $Capital * 1.09;// }// 如果代码体只有一行,可以省略大括号// if ($Capital > 5000) $Interest = $Capital * 1.09;// 有一种替代语法 : 模板语法, 用在与html代码混编的时候// 模板语法的目标是: 干掉大括号if ($Capital > 5000) : $Interest = $Capital * 1.08;endif;echo '本息合计: ' . $Interest . '<br>';echo '<hr>';//2. 双分支$Capital = 3500;if ($Capital > 5000) { $Interest = $Capitalt * 1.08;} else { $Interest = $Capital;}// 双分支模板语法if ($Capital > 5000) : $Interest = $Capital * 1.08;else : $Interest = $Capital;endif;echo '本息合计: ' . $Interest . '<br>';echo '<hr>';// 3. 多分支$Capital = 20000;// if ($Capital > 5000 && $Capital < 10000) {// $Interest = $Capitalt * 1.08;// } elseif ($Capital >= 10000 && $Capital < 20000) {// $Interest = $Capital * 1.09;// } elseif ($Capital >= 20000) {// $Interest = $Capital * 1.1;// } else {// $Interest = $Capital;// }// 模板语法if ($Capital > 5000 && $Capital< 10000) : $Interest = $Capital * 1.08; elseif ($Capital >= 10000 && $Capital < 20000) : $Interest = $Capital * 1.09; elseif ($Capital >= 20000) : $Interest = $Capital * 1.1; else : $Interest = $Capital;endif;echo '本息合计: ' . $Interest . '<br>';echo '<hr>';// 4. switch: 简化多分支$Capital = 2000;// switch (true) {// case $Capital > 5000 && $Capital < 10000:// $Interest = $Capital * 1.08;// // break: 跳出当前分支// break;// case $Capital >= 10000 && $Capital < 20000:// $Interest = $Capital * 1.09;// break;// case $Capital >= 20000:// $Interest = $Capital * 1.1;// break;// default:// $Interest = $Capital;// } // 模板语法switch (true) : case $Capital > 5000 && $Capital < 10000: $Interest= $Capital * 1.08; // break: 跳出当前分支 break; case $Capital >= 10000 && $Capital < 20000: $Interest = $Capital * 1.09; break; case $Capital >= 20000: $Interest = $Capital * 1.1; break; default: $Interest = $Capital;endswitch;echo '本息合计: ' . $Interest . '<br>';echo '<hr>';// switch 更常用的场景是单值判断$rate = 1.2;$Capital = 10000;switch ($rate): case 1.09: $Interest = $Capital* 1.09; break; case 1.08: $Interest = $Capital * 1.08; break; default: die('暂无该利率');endswitch;echo '本息合计: ' . $Interest . ', 利率: '. $rate;

<?php# 循环$courses = ['HTML', 'CSS', 'PHP', 'JS', 'JQuery','Laravel'];// 1. 入口判断型echo current($courses);next($courses);echo current($courses);next($courses);echo current($courses);echo '<hr>';reset($courses);// $course = current($courses): 循环条件// while ($course = current($courses)) {// echo $course . '<br>';// // 更新循环条件, 没有这个语句, 会进入死循环// next($courses);// }// reset($courses);// 模板语法while ($course = current($courses)) : echo $course . '<br>'; // 更新循环条件, 没有这个语句, 会进入死循环 next($courses);endwhile;echo '<hr>';// 2. 出口判断型reset($courses); do { $course = current($courses); echo $course . '<br>'; // 更新循环条件, 没有这个语句, 会进入死循环 next($courses);} while ($course = current($courses));// 无论条件是否为真,至少会执行一次// 没有对应的模板语法// 3. 计数型echo '数组中有 : ' . count($courses);echo '<hr>';// $i = 0;循环变量初始化// $i < count($courses): 循环条件// $i++: 更新循环条件for ($i = 0; $i < count($courses); $i++) {// echo $courses[$i] . '<br>';}// 模板语法 for ($i = 0; $i < count($courses); $i++) : // echo $courses[$i] . '<br>';endfor;echo '<hr>';reset($courses);// continue: 终止当前循环,提前进入下一轮$courses = ['HTML', 'CSS', false, 'PHP', null, 'JS', 'JQuery','Laravel'];// while ($course = current($courses)) :// echo $course . '<br>';// next($courses);// endwhile;for ($i = 0; $i < count($courses); $i++) : // 跳过空数据 if (!$courses[$i]) continue; echo $courses[$i] . '<br>';// break; 跳出本层if ($courses[$i] === 'PHP') break;endfor;
课程学习小结
本次课程首先介绍了运算操作符与流程控制的相关知识,尤其是流程控制的主要结构,在后续编程中用到得较多,老师列举了很多实用案例,帮助我理解相关表达方式,以下几点需要特别注意:
1、理解各个运算符的含义,尤其是一些比较特别的,如简化双分支:$a ?: $b、太空船<=>等;
2、分支:单分支if(){...}、双分支if(){...} else {...}、多分支if(){...} elseif {...} else {...}、switch、switch() {case: ... break...}及其模板语法的表达方式;
3、循环:入口判断型while(){...}、出口判断型do {...} while();、计数型for(){...}及其模板语法的表达方式;
4、循环控制关键字:continue终止本次循环,提前进入下一轮、break跳出本层循环。
通过本次课程老师详细的讲解,我对PHP基本编程语句有了更为深刻的理解,并且在老师的建议下动手做了相关实例,收获很大。
批改老师:
天蓬老师
批改状态:合格
老师批语:动手写了才能明白