一、运算符
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 |
逻辑非 |
3 | xor |
$a xor $b |
逻辑异或 |
4 ||
$a || $b
逻辑或
6. 三元运算符
序号 | 运算符 | 示例 | 描述 | 场景 |
---|---|---|---|---|
1 | ?: |
$a ?: $b |
仅判断表达式true/false |
简化双分支 |
2 | ?? |
$a ?? $b |
判断变量存在且不为 null |
设置默认值 |
7. 错误屏蔽符
运算符 | 示例 | 描述 | 场景 |
---|---|---|---|
@ |
@(10/0) |
屏蔽所有运行错误 | 线上生产环境 |
二、流程控制
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 |
跳出本层循环 |
三、实例代码
1、取模运算符
取模运算符(%),相当于获取两数相除而剩的余数!
e.g.
<?php
var_dump(18%3);
echo '<br>';
var_dump(16%5);
echo '<br>';
var_dump(9%6);
echo '<br>';
输出的结果为:
我们可以看到。18%3 输出的是int(0),16%5输出的是int(1),9%6输出的是int(3)。
那么为什么会这么显示呢?首先取模运算符是取两数相除的余数。18除以3,是可以整除的。最后余0.所以这里输出的是0.16除以5,不能被整除,3乘以5等于15,16减15等于1.那么16除以5,最后余的是1.所以这里输出的就是1.
2、字符串连接符
字符串连接符,可以将前后两个拼接(转换)成字符串进行返回。
e.g.
<?php
echo 'abc' . 28 . '<br>';
//相当于
echo 'abc' . (string)28 . '<br>';
上面是两个字符串连接的样例,当然字符串连接符,在我们日常生产过程中也会发挥很大的作用。比如下面介绍的字符串运算符 .=
。
e.g.
<?php
$user = ['110', '李磊', '100','111','韩梅梅','99'];
$table = '<table border="1">';
$table .= '<tr>';
$table .='<td>'.'学号' . '</td>';
$table .= '<td>'.'姓名' . '</td>';
$table .= '<td>'.'分数' . '</td>';
$table .= '</tr>';
$table .= '<tr>';
$table .='<td>'.$user[0] . '</td>';
$table .= '<td>'.$user[1] . '</td>';
$table .= '<td>'.$user[2] . '</td>';
$table .= '</tr>';
$table .= '<tr>';
$table .='<td>'.$user[3] . '</td>';
$table .= '<td>'.$user[4] . '</td>';
$table .= '<td>'.$user[5] . '</td>';
$table .= '</tr>';
$table .= '</table>';
echo $table;
echo '<hr>';
3、逻辑运算符
逻辑运算符 中的 &&
相当于 python
中的 and
, ||
相当于 python
中的 or
。&&
需满足前后两值,才会返回true。||
只需满足前后任意一值即可返回true。
<?php
$name = 'peter';
if ($name && $name==='admin') {
echo '欢迎您';
} else {
echo '未登录';
}
echo '<hr>';
示例中,显示未登录,是因为单纯满足$name,但不满住$name===’admin’。
<?php
$name = 'admin';
if (@$name && $name==='admin') {
echo '欢迎您';
} else {
echo '未登录';
}
echo '<hr>';
两值都满足,所以返回欢迎您。
<?php
$name = 'peter';
if ($name || $name==='admin') {
echo '欢迎您';
} else {
echo '未登录';
}
echo '<hr>';
从代码中看出使用了||
,所以只要满足其中一个条件就可以获得欢迎您的提示信息。
4、三元运算符
三元运算符,就是简化了分支结构(if esle)。
e.g.$$
<?php
$student1 =['name'=> '李磊','class'=>'三班','grade'=>90];
$student2 =['name'=> '韩梅梅','class'=>'三班','grade'=>50];
$var = $student1['grade'] >= $student2['grade'] && $student1['grade'] >= 60 && $student2['grade'] >= 60 ? $student1['name'] . '是' .$student1['class'] .'第一名'.',并且三班全都及格了!' :$student2['class'] .'有人未及格,实在太遗憾了!';
echo $var . '<hr>';
5、switch判断
<?php
error_reporting(E_ALL);
//定义购物车状态
$paystatus = 1;
//定义支付金额
$amount = 8000;
//定义用户等级
$usergrade = 9;
//判断用户等级
//如果购物车状态是真
if ($paystatus === 1) :
switch ($usergrade) :
case 1 :
$payment = $amount * 0.9;
break;
case 2 :
$payment = $amount * 0.8;
break;
case 3 :
$payment = $amount * 0.7;
break;
case 4 :
$payment = $amount * 0.6;
break;
default:
$payment = $amount;
endswitch;
//判断购物车状态为假
else :
echo '抱歉,您的购物车中没有东西,请添加后在进行购买';
endif;
switch ($usergrade) :
case 1 :
$usergroup = '普通会员';
break;
case 2 :
$usergroup = '青铜会员';
break;
case 3 :
$usergroup = '黄金会员';
break;
case 4 :
$usergroup = '铂金会员';
break;
default:
$usergroup = '您还不是我们的会员';
endswitch;
echo $usergrade >=1 &&$usergrade <=4 && $paystatus === 1 ?'您购物车中的物品价值为'.$amount.'但是由于您是我们的'.$usergroup.'您只需要支付'.$payment.'即可!':'由于您还不是我们的会员所以请您注册后再进行支付或您的购物车中可能没有物品,请添加后再进行购买';
6、入口及出口循环
<?php
$cities = ['长春', '哈尔滨', '沈阳', '大连', '通化'];
// 1. 入口判断型
while ($city = current($cities)) :
echo $city . '<br>';
// 更新循环条件, 没有这个语句, 会进入死循环
next($cities);
endwhile;
echo '<hr>';
// 2. 出口判断型
reset($cities);
do {
$city = current($cities);
echo $city . '<br>';
// 更新循环条件, 没有这个语句, 会进入死循环
next($cities);
} while ($city = current($cities));
// 无论条件是否为真,至少会执行一次
// 没有对应的模板语法
7、for循环
<?php
//创建今晚要吃的东西
$foods = ['龙虾', '鲍鱼', '海参', '螃蟹', '牛排', '咖喱鸡', '小肥羊'];
echo '那么今晚可以吃什么呢?'.'<br>';
for ($i = 0; $i < count($foods); $i++) :
echo $foods[$i].'<br>';
endfor;
echo '说说你想吃的东西!';
总结
今日学习了关于php的运算符和流程控制的知识点。运算符中需要注意区分 逻辑或与非与python中的区别。