批改状态:合格
老师批语:
[toc]
| 序号 | 运算符 | 示例 | 描述 |
|---|---|---|---|
| 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+版本
printf('5 模 3 = %d <br>', (5 % 3));//判断是否闰年$year = date('Y');// echo $year;//闰年:能被4整除,但是不能被100整除if ($year % 4 === 0 && $year % 100 !== 0) {printf('%d 年是闰年<br>', $year);} else {printf('%d 年不是闰年<br>', $year);}//随机数 10位的随机数echo mt_rand(), '<br>';//随机数 10位的随机数// echo mt_rand() % 100, '<br>';// 产生一个1到99的随机数echo mt_rand(1, 99);
| 运算符 | 示例 | 描述 |
|---|---|---|
. |
$str1 . $str2 |
连接运算,返回连接之后的字符串 |
| 序号 | 运算符 | 示例 | 描述 |
|---|---|---|---|
| 1 | = |
$a = 10 |
将表达式的值赋给变量 |
| 2 | += |
$a += 10 |
$a = $a + 10; |
| 3 | -= |
$a -= 10 |
$a = $a - 10; |
| 4 | *= |
$a *= 10 |
$a = $a * 10; |
| 5 | /= |
$a /= $b |
$a = $a / 10; |
| 6 | %= |
$a %= 10 |
$a = $a % 10; |
| 7 | .= |
$a .= 'a' |
$a = $a . 'a' |
// 赋值$a = 1;$b = 2;// $a = $a + $b;//等价$a += $b;echo '$a += $b => ', $a, '<br> ';// $a = $a - $b;//等价$a -= $b;echo '$a -= $b => ', $a, '<br> ';// $a = $a * $b;//等价$a *= $b;echo '$a *= $b => ', $a, '<br> ';// $a = $a / $b;//等价$a /= $b;echo '$a /= $b => ', $a, '<br> ';// .= :字符串拼装$str = 'php';$str .= '.cn';echo $str;$list = '<ul>';$list .= '<li>item1</li>';$list .= '<li>item2</li>';$list .= '<li>item3</li>';$list .= '</ul>';echo $list;
| 序号 | 运算符 | 示例 | 描述 |
|---|---|---|---|
| 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 的整数 |
// 比较,返回值是booleanvar_dump(100 > 80);echo '<hr>';// "==": 只要求值相等就是true,如果两边类型不同则自动转换var_export(100 == '100');echo '<br>';var_export(100 == (int)'100');echo '<br>';var_export((string)100 == '100');echo '<br>';// "===": 要求值,类型全相同才返回truevar_export(100 === '100');echo '<br>';var_export(100 === (int)'100');echo '<br>';$a = 25;$b = 15;// if ($a < $b) {// echo '-1 <br>';// } elseif ($a > $b) {// echo '1 <br>';// } else {// echo '0 <br>';// }// 等价于echo $a <=> $b;//逻辑// 与 &&:符号两边必须都为true,否则false// || :符号两边只要有一个为true,返回true,两边都是false才是false// 要求两边的操作数都是bool,如果不是就手动干预echo '<br>';var_dump(false && true);//第一个false 第二个条件不会判断,短路求值,后面的&&true永不执行echo '<br>';var_dump(true && false);echo '<br>';var_dump(false || true);echo '<br>';var_dump(!false, !true);$userName = 'admin';if (isset($userName) && $userName === 'admin') {echo '欢迎管理员' . $userName . '<br>';} else {echo '请登录 <br>';}if (!isset($email)) {echo '没有输入邮箱';}// 三元运算与null合并运算符$score = 90;if ($score >= 60) {echo '合格';} else {echo '补考';}echo '<br>';// 三元运算符echo $score >= 60 ? '合格' : '补考';//检测页码echo '<br>';// echo 'p = ' . $_GET['p'];// $page = isset($_GET['p']) ? $_GET['p'] : 1;// echo 'p = ' . $page;//简化//null 合并运算符,给变量一个默认值,用在表单中$page = $_GET['p'] ?? 1;echo 'p = ' . $page, '<hr>';?><!-- 粘性表单 --><input type="text" value="<?= $_GET['p'] ?? 1 ?>">
//字符串插值$name = '电脑';$price = 6699;//之前echo '品名:' . $name . '<br> 价格:' . $price . '元<br>';// 单引号与双引号定义的字符串是有区别的// 双引号中的字符串更像是一个模板// 这个模板中除了字面量之外,还可以有“变量”和“转义序列”// \n :换行;\r:回车;\t:tab,\\,\$:输出$符号// 变量需要一个边界符{} 一对大括号$template = "品名: {$name} \n 价格: {$price} 元 \n";echo $template, '<br>';//换行在html中就一个空格// nl2br()在\n前自动插入<br>$template = nl2br("品名: {$name} \n 价格: {$price} 元 \n");echo $template, '<br>';// 2. heredoc:双引号字符串的替代语法// 比较适合输出大量的多行的内部存在变量的html代码// $table = <<< "SHOW"// <table border="1" width="200">// <tr><th>品名</th><td>{$name}</td></tr>// <tr><th>价格</th><td>{$price}</td></tr>// </table>// SHOW;$table = <<< SHOW<table border="1" width="200"><tr><th>品名</th><td>{$name}</td></tr><tr><th>价格</th><td>{$price}</td></tr></table>SHOW;//SHOW: 必须要写到第一列,必须要与起始名称一致echo $table;echo '<hr>';// 3. nowdoc:单引号的替代语法$table = <<< 'SHOW'<table border="1" width="200"><tr><th>品名</th><td>手机</td></tr><tr><th>价格</th><td>3699</td></tr></table>SHOW;//SHOW: 必须要写到第一列,必须要与起始名称一致echo $table;// nowdoc:适合大段的多行的字符串字面量的输出echo '<hr>';
// 流程控制:分支// 1. 单分支$score = 70;if ($score >= 60) {echo '恭喜,成功上岸<br>';}// 替代语法// 目标是干掉大括号if ($score >= 60) :echo '恭喜,成功上岸<br>';endif;echo '<hr>';// 双分支$score = 70;if ($score >= 60) {echo '恭喜,成功上岸<br>';} else {echo '差一点就过了,补考吧<br>';}//替代语法$score = 70;if ($score >= 60) :echo '恭喜,成功上岸<br>';else :echo '差一点就过了,补考吧<br>';endif;// 简化语法:三元echo $score >= 60 ? '恭喜,成功上岸<br>' : '差一点就过了,补考吧<br>';// 多分支$score = 75;if ($score >= 60 && $score < 70) {echo '恭喜,成功上岸<br>';} elseif ($score >= 70) {echo '优秀,加油 <br>';} else {echo '差一点就过了,补考吧<br>';}// 替代语法$score = 75;if ($score >= 60 && $score < 70) :echo '恭喜,成功上岸<br>';elseif ($score >= 70) :echo '优秀,加油<br>';else :echo '差一点就过了,补考吧<br>';endif;// 4. switch, 多分支的简化方案echo '<hr>';switch ($score) {case $score >= 60 && $score < 70:echo '恭喜,成功上岸<br>';break;case $score >= 70:echo '优秀,加油<br>';break;default:echo '差一点就过了,补考吧<br>';}//替代语法switch ($score):case $score >= 60 && $score < 70:echo '恭喜,成功上岸<br>';break;case $score >= 70:echo '优秀,加油<br>';break;default:echo '差一点就过了,补考吧<br>';endswitch;// switch 更多用在单值判断// switch ($_GET['action'] ?? 1):// case 'insert':// echo '<script>alert("新增成功")</script>';// break;// case 'update':// echo '<script>alert("更新成功")</script>';// break;// case 'delete':// echo '<script>alert("删除成功")</script>';// break;// default:// echo '<script>alert("非法操作")</script>';// endswitch;
模板写法
<hr color="red"><?php $score = 75 ?><?php if ($score >= 60 && $score < 70) : ?><p>恭喜,成功上岸 </p><?php elseif ($score >= 70) : ?><p>优秀,加油</p><?php else : ?><p>差一点就过了,补考吧</p><?php endif ?>
// 三要素// 1. 循环条件的初始值// 2. 循环条件// 3. 更新循环条件 (步长)$courses = ['数学', '语文', '英语', '道法', '美术'];// 数组的长度// echo count($courses);// 1. 条件循环// 1.1 入口判断型 while(){}// 1. 循环条件的初始值// $i 是要遍历的数组的索引,默认从0开始$i = 0;// 2. 循环条件// while ($i < count($courses)) {// echo $courses[$i], '<br>';// // 3. 更新循环条件// $i++;// }//替代语法while ($i < count($courses)) :echo $courses[$i], '<br>';// 3. 更新循环条件$i++;endwhile;echo '<hr>';// 1.2 出口判断型 do {} while ()// 当条件为false至少执行一次$i = 0;do {echo $courses[$i], '<br>';$i++;} while ($i > count($courses));echo '<hr>';// 2. 计算式, for//for() 可以视为while的简化// for(初始条件;循环条件;更新条件)// for ($i = 0; $i < count($courses); $i++) {// echo $course[$i], '<br>';// }for ($i = 0; $i < count($courses); $i++) :echo $courses[$i], '<br>';endfor;echo '<hr color="red">';// 3. 提前终止循环// 3.1 提前终止本轮循环,进入到下一轮// 3.2 直接退出循环// for ($i = 0; $i < count($course); $i++) {// // 跳过英语// if ($i === 2) continue;// //只输出前2个// if ($i > 2) break;// echo $course[$i], '<br>';// }// echo '<hr>';// 遍历数组foreach ($courses as $i => $course) {if ($i === 2) {continue;}echo $course, '<br>';};echo '<hr color="green">';//替代语法foreach ($courses as $i => $course) :if ($i === 2) continue;echo $course, '<br>';endforeach;
本质上在当前脚本插入一个php结束标记,进入html模式
// include:将一个外部的文件插入到当前的代码块中$name = 'TJ';function hello($name){echo 'Hello ' . $name;}include 'hello.inc.php';// 当include时,当前会自动插入一个结束标记,进入到html模式// 被插入的脚本 可以访问当前作用域中的所有成员include 'test.inc.html';// include是在运行阶段包含,所以可以用在if中// 条件包含if (true) {// include 'hello.inc.php';require 'hello.inc.php';} else {echo '没有包进来';}
可以理解为 require === include + exit;
include_once ,只包含一次,失败会继续执行
require_once ,只包含一次,失败就退出
include 'world.inc.php';exit;require 'world.inc.php';echo '<h3>继续</h3>';
测试发现 require 也可以用在if中
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号