Blogger Information
Blog 28
fans 0
comment 0
visits 29992
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP流程控制及模板语法细说
G
Original
1321 people have browsed it

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>
Correcting teacher:灭绝师太灭绝师太

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
1 comments
灭绝师太 2020-11-23 14:16:06
作业总结的very good~可以预习一下今晚的课程,字符串与字符串函数~
1 floor
Author's latest blog post