博客列表 >PHP流程控制及模板语法细说

PHP流程控制及模板语法细说

G
G原创
2020年11月23日 11:47:471335浏览

PHP 运算和流程控制

PHP 运算符

算数运算符

符号 示例 描述
+ $a+$b $a与$b 的和
- $a-$b $a与$b 的差
* $a*$b $a与$b 的积
/ $a*$b $a与$b 的商
% $a%$b $a与$b 的余(模) 取余
++ $a++/++$a 先用再加/先加再用
-- $a--/--$a 先用再减/先减再用
** 3**3 幂运算:2 的 4 次方,需要 php5.6+版本

下面使用一个例子来举例算数运算符的运用:

  1. $year = date("Y");
  2. if ($year%4===0 &&$year%100!=0){
  3. echo "今年是闰年~";
  4. }else{
  5. echo "今年是平年~";
  6. }

比较运算符

符号 示例 描述
> $a>$b $a大于$b
< $a<$b $a小于$b
= $a=$b 将$b的值赋值给$a
== $a==$b $a与$b 的值相等
=== $a===$b $a与$b 的值和类型都相等
>= $a>=$b $a大于等于$b
<= $a<=$b $a小于等于$b

说明一下======的区别:
=:赋值运算符
将某一个变量的值赋值给另外一个变量

  1. $a = 6;
  2. $b = $a;

==:只要值相等就输出 true,否则输出 false

  1. $a = 6;
  2. $b = '6';
  3. echo ($a == $b); //输出 1
  4. var_dump($a == $b); //输出 bool(true)

===:不但需要值相等,还需要类型相等

  1. $a = 6;
  2. $b = '6';
  3. var_dump($a == $b); // bool(true)
  4. echo "<br>";
  5. var_dump($a === $b); // bool(false)

逻辑运算符

|符号|示例|描述|
|&&|$a>0 && $b>0|类似英文and 需要两边条件都为true才满足条件|
||||$a>0 ||& $b>0|类似英文or 其中一个条件为true即满足条件|
| / not|var_dump(!(10>20))|取反 如果条件为true 输出结果就为false|

var_dump(!(10>20));bool(true);

其他运算符

  • 太空船运算符
    <=>:组合比较符号

    PHP 7 新增加的太空船运算符(组合比较符)用于比较两个表达式 $a 和 $b,如果 $a 小于、等于或大于 $b 时,它分别返回-1、0 或 1。

  1. print(1<=>2); //输出 -1
  2. print(1<=>1); //输出 1
  3. print(1<=>0); //输出 0
  • 三元运算符

    通常是在 if 条件判断时简化使用。
    通常有三个表达式,两个运算符?:
    语法:表达式?满足条件时的语句:不满足条件时的语句

  1. $price = 2000;
  2. echo $price > 1000?"太贵了,买不起~":"价格还可以,我先买了~";
  • .点连接符

    作用:连接字符串
    $str1.$str2返回连接之后的字符串。

流程控制

分支结构

  1. 单分支结构 if
  1. if($price>1000)
  2. {
  3. echo "太贵了,我买不起~"
  4. }
  1. 双分支结构if else
  1. if($price>1000)
  2. {
  3. echo "太贵了,我买不起~"
  4. }else
  5. {
  6. "价格还可以,我买了"
  7. }
  1. 多分支结构
  • if elseif else
  1. $price = 3500;
  2. if($price < 999){
  3. echo "价格一般";
  4. }elseif($price < 1200){
  5. echo "价格有点小贵";
  6. }elseif($price < 2000){
  7. echo "太贵啦,买不起~";
  8. }else{
  9. echo "超级贵,大家别买~";
  10. }
  • swicth case default

    PS:
    ① 使用swicth case进行多分支条件判断的时候,必须在每个条件符合语句执行完毕后添加一个break跳出来,否则会出错。
    swicth case通常用来做单值判断

  1. $price = 500;
  2. switch($price){
  3. case $price <999:
  4. echo "价格一般";
  5. break;
  6. case $price < 1200:
  7. echo "价格有点小贵";
  8. break;
  9. defalut:
  10. echo "太贵了,大家别买";
  11. }

循环结构

  1. while循环 —> 入口判断型

    PS:while循环在循环体之中必须要有更新循环条件的语句,否则会进入死循环~
    什么是入口判断型:就是当程序执行到该循环时,条件进入后先判断条件,条件成立即可执行,不成立就跳到下一个循环体

语法:while(条件){code.........}

  1. $cities = ['合肥','南京','杭州','苏州','上海'];
  2. while ($city = current($cities)){//current 可以用来求数组的长度,类似JS中的length
  3. echo $city.'<br>';
  4. next($cities); //next 函数,将索引跳转到下一位,可以理解为跳转到下一个数组成员
  5. }

指针复位函数:reset():将指针还原,如上述循环,最后将指针还原后
$cities = ['合肥','南京','杭州','苏州','上海'];

  1. do while循环 —>出口判断型

    什么是出口判断型:就是当程序执行到循环体的时候,先执行条件符合语句,再来判断条件是否成立,条件成立输出,不成立就跳到下一个循环体
    条件时放在出口

  1. $cities = ['合肥','南京','杭州','苏州','上海'];
  2. do{
  3. echo $city.'<br>';
  4. next($cities);
  5. }while($city = current($cities));

  1. for循环

    语法:for(变量;判断条件;更新循环条件)

  1. for($i=0;$i<count($cities);$i++){
  2. echo $cities[$i],'<br>';
  3. }
  4. echo "<hr>"
  5. for($i=0;$i<count($cities);$i++){
  6. // 有条件的循环:需要使用到continue函数(跳过)
  7. if($i===2 || $i===3) continue; //如果i = 2/3,就跳过,不输出。
  8. echo $cities[$i],'<br>';
  9. }

PHP 模版语法

常用于:流程控制之中。如分支控制和循环控制都可以使用
语法:便捷记忆:将{替换为:} 替换为 end<xxx>

这里使用 switch 循环来演示:

  1. echo "<hr>";
  2. $price = 500;
  3. switch($price)://将{替换为:
  4. case $price <999:
  5. echo "价格一般";
  6. break;
  7. case $price < 1200:
  8. echo "价格有点小贵";
  9. break;
  10. default :
  11. echo "太贵了,大家别买";
  12. endswitch;
  13. // 这里是将}替换为了endswitch,其他流程控制类似,如endif、endwhile、endfor、
  14. //endforeach 以及 endswitch;

模板语法的作用:
存在就是合理,它自有它的用处,这些语法能发挥的地方是在 PHP 和 HTML 混合页面的代码里面。好处如下:

1)使 HTML 和 PHP 混合页面代码更加干净整齐。

2)流程控制逻辑更清晰,代码更容易阅读。

实例:利用循环等操作来实现编写一个简单的计算器

  1. <head>
  2. <meta charset="UTF-8">
  3. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  4. <title>PHP计算器</title>
  5. </head>
  6. <body>
  7. <?php
  8. error_reporting(E_ALL & ~E_NOTICE);
  9. $mess = '';
  10. if (isset($_POST['sub']))
  11. {
  12. if($_POST['num1'] == ' '){
  13. $mess .= "第一个数字不能为空~<br>";
  14. }
  15. if($_POST['num2'] == ''){
  16. $mess .= "第二个数字不能为空~<br>";
  17. }else{
  18. if($_POST['opt'] == "/" && $_POST['num2'] == 0)
  19. {
  20. $mess .= "除数不能为0~<br>";
  21. }elseif($_POST['opt'] == "%" && $_POST['num2'] == 0)
  22. {
  23. $mess .= "除数不能为0~<br>";
  24. }
  25. }
  26. }
  27. ?>
  28. <table>
  29. <form action="" method="post">
  30. <h1>计算器</h1>
  31. <tr>
  32. <td>
  33. <input type="number" size="4" name="num1" value="<?php echo $_POST['num1']; ?>" >
  34. </td>
  35. <td>
  36. <select name="opt" >
  37. <option value="+" <?php echo $_POST["opt"] == "+" ? "selected": "" ?>>+</option>
  38. <option value="-" <?php echo $_POST["opt"] == "-" ? "selected": "" ?>>-</option>
  39. <option value="*" <?php echo $_POST["opt"] == "*" ? "selected": "" ?>>*</option>
  40. <option value="/" <?php echo $_POST["opt"] == "/" ? "selected": "" ?>>/</option>
  41. <option value="%" <?php echo $_POST["opt"] == "%" ? "selected": "" ?>>%</option>
  42. </select>
  43. </td>
  44. <td>
  45. <input type="number" size="4" name="num2" value="<?php echo $_POST['num2']; ?>" >
  46. </td>
  47. <td>
  48. <input type="submit" name="sub" value="计算" >
  49. </td>
  50. </tr>
  51. </form>
  52. <?php
  53. if(!$mess)
  54. {
  55. $sum = 0;
  56. switch($_POST['opt'])
  57. {
  58. case "+":
  59. $sum = $_POST['num1'] + $_POST['num2']; break;
  60. case "-":
  61. $sum = $_POST['num1'] - $_POST['num2']; break;
  62. case "*":
  63. $sum = $_POST['num1'] * $_POST['num2']; break;
  64. case "/":
  65. $sum = $_POST['num1'] / $_POST['num2']; break;
  66. case "%":
  67. $sum = $_POST['num1'] % $_POST['num2']; break;
  68. }
  69. $res = "结果: {$_POST['num1']} {$_POST['opt']} {$_POST['num2']} = {$sum}";
  70. echo isset($_POST['num1']) ? $res : '';
  71. }else {
  72. echo $mess;
  73. }
  74. ?>
  75. </table>
  76. </body>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议
灭绝师太2020-11-23 14:16:061楼
作业总结的very good~可以预习一下今晚的课程,字符串与字符串函数~