一、代码运行演示地址
二、一些难记住但常用的运算符
1. 算术运算符
序号 |
运算符 |
示例 |
描述 |
1 |
% |
$a%$b |
$a与$b 的余(模) |
2 |
++ |
$a++/++$a |
先用再加/先加再用 |
3 |
-- |
$a--/--$a |
先用再减/先减再用 |
4 |
** |
2**4 |
幂运算:2 的 4 次方 |
$a++
=>$a = $a + 1
, $a--
=>$a = $a - 1
**
: 幂运算需要 php5.6+
版本
2. 赋值运算符
序号 |
运算符 |
示例 |
描述 |
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'; |
3. 比较运算符
序号 |
运算符 |
示例 |
描述 |
1 |
== |
$a == $b |
等于 (值相等即可) |
2 |
=== |
$a == $b |
全等于(二边值与类型全等) |
3 |
!= |
$a != $b |
不相等 |
4 |
!== |
$a !== $b |
不全等 |
5 |
<=> |
$a <=> $b |
太空船php7+ |
- 比较运算符: 返回布尔值,常用于流程控制中(
if/while/for...
) <=>
: 也叫组合比较符, 例如$a <=> $b
, 有三种返回结果
4. 逻辑运算符
序号 |
运算符 |
示例 |
描述 |
1 |
&& |
$a && $b |
逻辑与 |
2 |
` |
|
` |
`$a |
|
$b` |
逻辑或 |
3 |
! |
!$a |
逻辑非 |
4 |
xor |
$a xor $b |
逻辑异或 |
5. 三元运算符
序号 |
运算符 |
示例 |
描述 |
场景 |
1 |
?: |
$a ?: $b |
仅判断表达式true/false |
简化双分支 |
2 |
?? |
$a ?? $b |
判断变量存在且不为 null |
设置默认值 |
6. 错误屏蔽符
运算符 |
示例 |
描述 |
场景 |
@ |
@(10/0) |
屏蔽所有运行错误 |
线上生产环境 |
运算符代码:
<?php
// 运算符
// 取余数
var_dump(10%3);
echo '<hr>';
// ++,--,只能用在变量上, 先引用变量的值, 再将变量执行+1或-1的运算
$a = 88;
var_dump($a);
$a++;
var_dump($a);
echo '<hr>';
$b = 66;
$b--;
var_dump($b);
$b = 66;
--$b;
var_dump($b);
echo '<hr>';
// 比较运算符返回布尔类型的值
// 太空船 <=>
var_dump(66 <=> 88);
// -1 < 0, 说明 10 小于 20
var_dump(88 <=> 66);
// 1 > 0, 说明 10 大于 5
var_dump(66 <=> 66);
// 0, 说明 相等
echo '<hr>';
// && 且,同时符合
var_dump((66<88) && 88>66);
// || 或,其中一个符合
var_dump((66<88) || 66>88);
echo '<hr>';
// 三元运算符
// 条件 ? true : false
$age = 26;
echo $age > 18 ? '成年了' : '小屁孩';
echo '<hr>';
// ?? null合并运算符
// 设置变量默认值
$password;
// $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; |
分支代码:
<?php
// 分支
// 1.单分支
$salary = 800;
if($salary < 1000){
echo '建议走路,锻炼身体。<br>';
}
// 简写
if($salary < 1000) echo '建议走路,锻炼身体。<br>';
// 模板语法
if($salary < 1000):
echo '建议走路,锻炼身体。<br>';
endif;
echo '<hr>';
// 2.双分支
$salary = 2000;
if($salary < 1000){
echo '建议走路,锻炼身体。<br>';
} else {
echo '可以不用走路了。<br>';
}
// 模板语法
if($salary < 1000):
echo '建议走路,锻炼身体。<br>';
else :
echo '可以不用走路了。<br>';
endif;
echo '<hr>';
// 3.多分支
$salary = 9000;
if ($salary >= 1000 && $salary < 3000) {
echo '电动自行车,告别城市拥堵。<br>';
} elseif ($salary >= 3000 && $salary < 5000) {
echo '高档电动车,将拥堵的车流甩在身后。<br>';
} elseif ($salary >= 5000 && $salary < 8000) {
echo '入手入门级6万左右车型,成为有车一族。<br>';
} elseif ($salary >= 8000) {
echo '10万以上车型。<br>';
} else {
echo '还是老老实实走路,锻炼身体吧。<br>';
}
// 模板语法
if ($salary >= 1000 && $salary < 3000) :
echo '电动自行车,告别城市拥堵。<br>';
elseif ($salary >= 3000 && $salary < 5000) :
echo '高档电动车,将拥堵的车流甩在身后。<br>';
elseif ($salary >= 5000 && $salary < 8000) :
echo '入手入门级6万左右车型,成为有车一族。<br>';
elseif ($salary >= 8000) :
echo '10万以上车型。<br>';
else :
echo '还是老老实实走路,锻炼身体吧。<br>';
endif;
echo '<hr>';
// 4.多分支简化'switch'
$salary = 6000;
switch (true) {
case $salary >= 1000 && $salary < 3000:
echo '电动自行车,告别城市拥堵。<br>';
break;
case $salary >= 3000 && $salary < 5000:
echo '高档电动车,将拥堵的车流甩在身后。<br>';
break;
case $salary >= 5000 && $salary < 8000:
echo '入手入门级6万左右车型,成为有车一族。<br>';
break;
case $salary >= 8000:
echo '10万以上车型。<br>';
break;
default:
echo '还是老老实实走路,锻炼身体吧。<br>';
}
// 模板语法
$salary = 6000;
switch (true) :
case $salary >= 1000 && $salary < 3000:
echo '电动自行车,告别城市拥堵。<br>';
break;
case $salary >= 3000 && $salary < 5000:
echo '高档电动车,将拥堵的车流甩在身后。<br>';
break;
case $salary >= 5000 && $salary < 8000:
echo '入手入门级6万左右车型,成为有车一族。<br>';
break;
case $salary >= 8000:
echo '10万以上车型。<br>';
break;
default:
echo '还是老老实实走路,锻炼身体吧。<br>';
endswitch;
echo '<hr>';
// switch单值判断
$live= '';
$salary = 6000;
switch ($salary) :
case 4000:
$live = '养活自己.';
break;
case 6000:
$live = '有点存款.';
break;
case 10000:
$live = '找个女朋友.';
break;
case 12000:
$live = '买辆车.';
break;
default:
$live = '未定义.';
endswitch;
echo $live;
echo '<hr>';
代码演示效果:
2. 循环结构
序号 |
类型 |
语法 |
模板语法 |
1 |
入口判断型 |
while(){...} |
while(): ... endwhile; |
2 |
出口判断型 |
do {...} while(); |
do : ... while(); |
3 |
计数型 |
for(){...} |
for () : ... endfor; |
循环控制关键字:
序号 |
关键字 |
描述 |
1 |
continue |
终止本次循环,提前进入下一轮 |
2 |
break |
跳出本层循环 |
循环代码:
<?php
// 循环
$country = ['CHN', 'US', 'AS', 'VN', 'CANADA'];
// current():当前数组指针
// next():下移
// reset():重置
// count():计数
// for:计数型
for($i = 0; $i < count($country); $i++) {
echo $country[$i] . '<br>';
next( $country);
}
echo '<hr>';
// 模板语法
for($i = 0; $i < count($country); $i++) :
echo $country[$i] . '<br>';
next( $country);
endfor;
echo '<hr>';
// break: 跳出循环
$country = ['CHN', 'US', 'AS', 'VN', 'CANADA'];
for($i = 0; $i < count($country); $i++) :
echo $country[$i] . '<br>';
next( $country);
if ($country[$i] === 'AS') break;
endfor;
echo '<hr>';
// continue : 终止本次循环,提前进入下一轮
$country = ['CHN', false, '', 'US', 'AS', null, 'VN', 'CANADA'];
for($i = 0; $i < count($country); $i++) :
if (!$country[$i]) continue;
echo $country[$i] . '<br>';
next( $country);
endfor;
echo '<hr>';
// while:入口判断型
$country = ['CHN', 'US', 'AS', 'VN', 'CANADA'];
$i = 0;
while ($i < count($country)) :
echo $country[$i] . '<br>';
// 更新循环条件, 没有这个语句, 会进入死循环
next($country);
$i++;
endwhile;
echo '<hr>';
// do {...} while():出口判断型
reset($country);
$i = 0;
do {
echo $country[$i] . '<br>';
// 更新循环条件, 没有这个语句, 会进入死循环
next($country);
$i++;
} while ($i > count($country));
代码演示效果: