运算符
比较:
==
===
!==
;太空船(组合比较):
<=>
;逻辑:
&&
||
;三元:
? :
;null合并:
??
;
示例:
<?php
// 1.比较运算符“==”,“===”,“!==”
$age = 10;
$years = 18;
// 使用比较要用“==”或“===”,“=”是赋值
var_dump($age == $years);
var_dump($age === $years);
// 非运算符
var_dump($age !== $years);
echo '<hr>';
if ($age === $years) {
echo '完全相等';
} else {
echo '不完全相等';
}
echo '<hr>';
// 操作类型不一致的值用“==”做比较时两边的值会自动转换
var_dump(18 == '18');
var_dump(18 == 18);
// 用“===”做比较时两边的值类型也必须一致
var_dump(18 === '18');
var_dump(18 === 18);
echo '<hr>';
// 2.太空船运算符(组合比较):“<=>”,返回结果为-1,0,1
var_dump(18 <=> 28);
var_dump(18 <=> 18);
var_dump(18 <=> 10);
echo '<hr>';
// 3.逻辑运算符:“&&”,“||”
$name = 20;
// 必须全部满足才返回true,如果有个条件为false,就不会计算后面的条件了,叫做短路求值
if ($name > 20 && $name < 30) {
echo '成立';
} else {
echo '不成立';
}
// 只要满足其中一个条件即返回true
if ($name > 10 || $name < 20) {
echo '成立';
} else {
echo '不成立';
}
echo '<hr>';
// 4.三元运算符:“? :”
var_dump($name > 10 && $name !== 20 ? '成立' : '不成立');
echo '<hr>';
// 合并运算:“??”
// $pwd = '135642';
if (isset($pwd)) {
echo sha1($pwd);
} else {
echo '密码错误';
}
echo '<hr>';
// 下面的代码表示如果$pwd不存在则输出'密码错误'
echo $pwd ?? '密码错误';
运行结果
分支
- 单分支示例:
// 1.单分支
// 当流程控制语句中只有一行代码时,可以省略大括号
$age = 60;
if ($age >= 58) {
echo '老年人';
}
// 可以写成
if ($age >= 58) echo '老年人';
// 还可以用模板语法写成(模板语法中用“:和end标志”代表大括号):
if ($age >= 58) :
echo '老年人';
endif;
- 双分支示例:
// 2.双分支
if ($age !== 60) {
echo '还不是老年人呢';
} else {
echo '年龄' . $age . '岁了';
}
// 模板语法来写:
if ($age !== 60) :
echo '还不是老年人呢';
else :
echo '年龄' . $age . '岁了';
endif;
- 多分支示例:
// 3.多分支
if ($age >= 1 && $age < 20) {
echo '年轻人';
} elseif ($age >= 20 && $age < 40) {
echo '青年人';
} elseif ($age >=40 && $age < 60) {
echo '中年人';
} elseif ($age >=60 && $age < 80) {
echo '老年人';
} else {
echo '外星人';
}
// 用模版语法来写:
if ($age >= 1 && $age < 20) :
echo '年轻人';
elseif ($age >= 20 && $age < 40) :
echo '青年人';
elseif ($age >=40 && $age < 60) :
echo '中年人';
elseif ($age >=60 && $age < 80) :
echo '老年人';
else :
echo '外星人';
endif;
- 简化多分支示例:
// 还可以用switch简化来写(通常用于单值判断):
switch ($age) {
case $age >= 1 && $age < 20 :
echo '年轻人';
break;
case $age >= 20 && $age < 40 :
echo '青年人';
break;
case $age >= 40 && $age < 60 :
echo '中年人';
break;
case $age >= 60 && $age < 80 :
echo '老年人';
break;
default : '外星人';
die('不是人');
}
// 模板语法:
switch ($age) :
case $age >= 1 && $age < 20 :
echo '年轻人';
break;
case $age >= 20 && $age < 40 :
echo '青年人';
break;
case $age >= 40 && $age < 60 :
echo '中年人';
break;
case $age >= 60 && $age < 80 :
echo '老年人';
break;
default : '外星人';
die('不是人');
endswitch;
循环
while:入口判断循环
while(条件){...}
do while:出口判断循环
do{...}while(条件)
,没有模板语法for:计数循环
for(循环变量初始化, 循环条件, 更新循环条件){...}
示例:
<?php
// 模拟一个数组
$data = ['name' => '小明', '年龄' => 18, '性别' => '男'];
// 1.入口判断循环:while(条件){...},循环开始之前先判断条件,为真才执行
// current()输出数组中当前元素的值,不会移动指针
// next()将指针下移一位
while ($database = current($data)) {
echo $database . ',';
next($data);
}
echo '<br>';
// 此时指针已被调至末尾,要重置指针用reset()
reset($data);
// 模板语法
while ($database = current($data)) :
echo $database . ',';
next($data);
endwhile;
echo '<hr>';
reset($data);
// 2.出口判断循环:do{...}while(条件),没有模板语法
do {
echo $database . ',';
next($data);
}
while (
$database = current($data)
);
echo '<hr>';
// 3.计数循环:for(循环变量初始化, 循环条件, 更新循环条件){...}
// count()计算数组中的单元数目,或对象中的属性个数
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 数组遍历
// for ($i = 0; $i < count($array); $i++) {
// echo $array[$i] . '<br>';
// }
echo '<hr>';
for ($i = 0; $i < count($array); $i++) {
// 中断,输出1-6,7不会输出
// if ($i === 6) break;
// 跳过元素3、5,输出其他的元素
if ($i === 4 || $i === 2) continue;
echo $array[$i] . '<br>';
}
总结
- 模板语法在渲染前端页面时使用;
- 本章常用函数:isset(),unset(),sha1(),current(),next(),reset(),count();
- 太空船运算符和Null合并运算符,7.0版本以上php才支持;