1. 赋值运算符
序号 |
运算符 |
示例 |
描述 |
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'; |
2. 比较运算符
序号 |
运算符 |
示例 |
描述 |
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
, 有三种返回结果
==: 只判断值是否相等, 不判断类型
当 == 二边的类型不同时,会发生类型的自动转换
=== 全等, 不仅值要相等, 类型也要相等
// 太空船 <=>
var_dump(10 <=> 20);
// -1 < 0, 说明 10 小于 20
var_dump(10 <=> 5);
// 1 > 0, 说明 10 大于 5
var_dump(10 <=> 10);
// 0, 说明 相等
3. 逻辑运算符
4. 三元运算符
序号 |
运算符 |
示例 |
描述 |
场景 |
1 |
?: |
$a ?: $b |
仅判断表达式true/false |
简化双分支 |
2 |
?? |
$a ?? $b |
判断变量存在且不为 null |
设置默认值 |
// ? : 简化双分支if
$price = 900;
if ($price > 1000) echo '太贵了'; else echo '真便宜';
// 条件 ? true : false
echo $price > 1000 ? '太贵了' : '真便宜';
echo '<hr>';
// ?? null合并运算符
// 设置变量默认值
$password = '123abc';
// 相同于 $password = isset($password) ? $password : 'root';
$password = $password ?? 'root';
echo $password;
流程控制
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; |
// 拼团人数打折价格
// 单分支
// 团购人数
$renshu = 5;
//实际价格
$shijijiage = 2000;
if ($renshu > 3) {
$shijijiage *= 0.9;
}
echo '实际支付: ' . $shijijiage . '<br>';
echo '<hr>';
// 单分支模板语法
$shijijiage = 2000;
if ($renshu > 3) : $shijijiage *= 0.9; endif;
echo '实际支付: ' . $shijijiage . '<br>';
echo '<hr>';
// 双分支
$shijijiage = 2000;
if ($renshu > 3) {
$shijijiage *= 0.9;
} else {
$shijijiage = $shijijiage;
}
echo '实际支付: ' . $shijijiage . '<br>';
echo '<hr>';
// 双分支模板语法
$renshu = 2;
$shijijiage = 2000;
if ($renshu > 3) :
$shijijiage *= 0.9;
else :
$shijijiage = $shijijiage;
endif;
echo '实际支付: ' . $shijijiage . '<br>';
echo '<hr>';
// 多分支
$renshu = 6;
$shijijiage = 2000;
if ($renshu > 5 && $renshu < 10) {
$shijijiage *= 0.9;
} elseif ($renshu >= 10 && $renshu < 20) {
$shijijiage *= 0.8;
} elseif ($renshu >= 20) {
$shijijiage *= 0.7;
} else {
$shijijiage = $shijijiage;
}
echo '实际支付: ' . $shijijiage . '<br>';
echo '<hr>';
// 多分支模板语法
$renshu = 55;
$shijijiage = 2000;
if ($renshu > 5 && $renshu < 10) :
$shijijiage *= 0.9;
elseif ($renshu >= 10 && $renshu < 20) :
$shijijiage *= 0.8;
elseif ($renshu >= 20) :
$shijijiage *= 0.7;
else :
$shijijiage = $shijijiage;
endif;
echo '实际支付: ' . $shijijiage . '<br>';
echo '<hr>';
// switch: 简化多分支
$renshu = 12;
$shijijiage = 2000;
switch (true) {
case $renshu > 5 && $renshu < 10:
$shijijiage *= 0.9;
break;
case $renshu >= 10 && $renshu < 20:
$shijijiage *= 0.8;
break;
case $renshu >= 20:
$shijijiage *= 0.7;
break;
default:
$shijijiage = $shijijiage;
}
echo '实际支付: ' . $shijijiage . '<br>';
echo '<hr>';
// switch模板语法
$renshu = 12;
$shijijiage = 2000;
switch (true) :
case $renshu > 5 && $renshu < 10:
$shijijiage *= 0.9;
break;
case $renshu >= 10 && $renshu < 20:
$shijijiage *= 0.8;
break;
case $renshu >= 20:
$shijijiage *= 0.7;
break;
default:
$shijijiage = $shijijiage;
endswitch;
echo '实际支付: ' . $shijijiage . '<br>';
echo '<hr>';
// switch 更常用的场景是单值判断
$renshu = 12;
$shijijiage = 2000;
$zhekou = 0.7;
switch ($zhekou) :
case 0.9:
$shijijiage *= 0.9;
break;
case 0.8:
$shijijiage *= 0.8;
break;
case 0.7:
$shijijiage *= 0.7;
break;
default:
$shijijiage = $shijijiage;
endswitch;
echo '实际支付: ' . $shijijiage . '折扣率:' . $zhekou .'<br>';
echo '<hr>';
PHP循环
序号 |
类型 |
语法 |
模板语法 |
1 |
入口判断型 |
while(){...} |
while(): ... endwhile; |
2 |
出口判断型 |
do {...} while(); |
do : ... while(); |
3 |
计数型 |
for(){...} |
for () : ... endfor; |
current()
:获取数组当前值
reset()
:重置数组指针
count()
: 计算数组元素的数量
strlen()
: 计算字符串长度
trim()
, rtrim()
, ltrim()
: 是从字符串二边,右边, 左边删除指定的字符,默认删除的是空格
mt_rand(min, max)
: 产生指定范围的随机数
count()
判断数组元素个数
strlen()
判断字符串长度
$cities = ['武汉', '合肥', '南京', '杭州', '上海'];
//while循环
// $city = current($cities): 循环条件
// while ($city = current($cities)) {
// echo $city . '<br>';
// // 更新循环条件, 没有这个语句, 会进入死循环
// next($cities);
// }
// reset($cities);
// 模板语法
while ($city = current($cities)) :
echo $city . '<br>';
// 更新循环条件, 没有这个语句, 会进入死循环
next($cities);
endwhile;
for()
: 计数式循环
for(循环变量的初始化; 循环条件; 更新循环条件) {…}
// 3. 计数型
echo '数组中有 : ' . count($cities);
// $i = 0;循环变量初始化
// $i < count($cities): 循环条件
// $i++: 更新循环条件
for ($i = 0; $i < count($cities); $i++) {
// echo $cities[$i] . '<br>';
}
// 模板语法
for ($i = 0; $i < count($cities); $i++) :
// echo $cities[$i] . '<br>';
endfor;
序号 |
关键字 |
描述 |
1 |
continue |
终止本次循环,提前进入下一轮 |
2 |
break |
跳出本层循环 |
for ($i = 0; $i < count($cities); $i++) :
// 跳过空数据
if (!$cities[$i]) continue;
echo $cities[$i] . '<br>';
// break; 跳出本层
if ($cities[$i] === '杭州') break;
endfor;