流程控制:分支和循环,php与html混编技巧
发布于:2022-04-23 16:31:34
次阅读
分支
<?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> <!-- 动态设置样式方法 -->
