分支
<?php
// ! 流程控制: 分支
$age = 15;
// * 1. 单分支
if ($age >= 18) {
echo '恭喜, 已成年,可以观看<br>';
}
// * 2. 双分支
// $age = 38;
if ($age >= 18)
echo '恭喜, 已成年,可以观看<br>';
else
// 默认分支
echo '未成年, 请在家长陪同下观看<br>';
// * 3. 多分支
$age = 44;
if ($age >= 18 && $age < 30)
echo "{$age}岁, 彩礼, 能按揭吗? <br>";
else if ($age >= 30 && $age < 45)
echo "{$age}岁, 应该成个家了 <br>";
else if ($age >= 45)
echo "{$age}岁, 房贷快还完了 <br>";
// 未成年, < 18, 默认分支
else
echo "{$age}岁, 放学了, 我送你回家 <br>";
// * 4. 多分支的语法糖:switch
$age = 15;
switch (true) {
case $age >= 18 && $age < 30:
echo "{$age}岁, 彩礼, 能按揭吗? <br>";
break;
case $age >= 30 && $age < 45:
echo "{$age}岁, 应该成个家了 <br>";
break;
case $age >= 45:
echo "{$age}岁, 房贷快还完了 <br>";
break;
default:
echo "{$age}岁, 放学了, 我送你回家 <br>";
}
循环
<?php
// ! 流程控制: 循环
// 循环本质上还是"分支"
$colors = ['red', 'green', 'blue'];
/**
* 循环三要素:
* 1. 初始化循环变量: $i =0;
* 2. 循环条件: $i < count($colors);
* 3. 更新循环条件: $i = $i + 1
*/
// * while() 来简化以上的分支过程
$list = '<ul style="border:1px solid;background: lightcyan">';
$i = 0;
while ($i < count($colors)) {
$list .= "<li>{$colors[$i]}</li>";
// 更新条件
$i = $i + 1;
}
$list .= '</ul>';
echo $list;
// while 还有一个双胞胎, do-while 与上面的区别在于条件判断的时机不同
$list = '<ul style="border:1px solid;background: lightgreen">';
$i = 0;
do {
$list .= "<li>{$colors[$i]}</li>";
// 更新条件
$i = $i + 1;
} while ($i > count($colors));
$list .= '</ul>';
echo $list;
// for 可看成 while 的语法糖
$list = '<ul style="border:1px solid;background: violet">';
for ($i = 0; $i < count($colors); $i++) {
$list .= "<li>{$colors[$i]}</li>";
}
$list .= '</ul>';
echo $list;
// 中断或跳过某次循环
// break; continue
$list = '<ul style="border:1px solid;background: red">';
for ($i = 0; $i < count($colors); $i++) {
// 只输出前二个
// if ($i > 1) break;
// 跳过第2个,只输出第1个和第3个
if ($i === 1) continue;
$list .= "<li>{$colors[$i]}</li>";
}
$list .= '</ul>';
echo $list;
php与html原生混编技巧
<?php
// 用二维数组来模拟数据表查询结果集
$stus = [
['id' => 1, 'name' => '刘备', 'course' => 'js', 'score' => 83],
['id' => 2, 'name' => '关羽', 'course' => 'php', 'score' => 75],
['id' => 3, 'name' => '张飞', 'course' => 'js', 'score' => 52],
['id' => 4, 'name' => '孙权', 'course' => 'php', 'score' => 88],
['id' => 5, 'name' => '周瑜', 'course' => 'js', 'score' => 65],
['id' => 6, 'name' => '孔明', 'course' => 'php', 'score' => 53],
['id' => 7, 'name' => '赵云', 'course' => 'js', 'score' => 63],
['id' => 8, 'name' => '马超', 'course' => 'js', 'score' => 77],
['id' => 9, 'name' => '姜维', 'course' => 'php', 'score' => 93],
['id' => 10, 'name' => '黄忠', 'course' => 'js', 'score' => 81],
]
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>php与html原生混编</title>
<style>
table {
border-collapse: collapse;
width: 360px;
text-align: center;
}
table th,
table td {
border: 1px solid #000;
padding: 5px;
}
table caption {
font-size: 1.3em;
}
table thead {
background-color: lightcyan;
}
.active {
color: red;
}
</style>
</head>
<body>
<table>
<caption>学生成绩表</caption>
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>课程</th>
<th>成绩</th>
</tr>
</thead>
<tbody>
<!-- 这里显示的用户数据 -->
<?php
foreach ($stus as $stu) {
// 只查php
if ($stu['course'] === 'php') {
echo <<< STU
<tr>
<td>{$stu['id']}</td>
<td>{$stu['name']}</td>
<td class="active">{$stu['course']}</td>
<td>{$stu['score']}</td>
</tr>
STU;
}
}
?>
</tbody>
</table>
</body>
</html>
模板混编
<!-- php模板语法的目标:与html和php代码分离 -->
<?php foreach($stus as $stu) : ?>
<!-- 当前已经离开了php环境,处在html中了 -->
<!-- <tr>
<td><?php echo $stu['id'] ?></td>
<td><?php echo $stu['name'] ?></td>
<td><? echo $stu['course'] ?></td>
<td><? echo $stu['score'] ?></td>
</tr> -->
<!-- 输出成绩大于70分的 -->
<!-- <?php if($stu['score'] > 70) :?>
<tr>
<td><?php echo $stu['id'] ?></td>
<td><?php echo $stu['name'] ?></td>
<td><? echo $stu['course'] ?></td>
<td class="active"><? echo $stu['score'] ?></td>
</tr>
<?php endif ?> -->
<!-- 输出全部,并将不合格的成绩标红 -->
<tr>
<td><?php echo $stu['id'] ?></td>
<td><?php echo $stu['name'] ?></td>
<td><? echo $stu['course'] ?></td>
<td class="<?= $stu['score'] < 60 ? "active" : '' ?>"><? echo $stu['score'] ?></td>
</tr>
<!-- 动态设置样式方法 -->