Blogger Information
Blog 29
fans 1
comment 0
visits 14956
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP中的流程控制与模板语法
风车
Original
647 people have browsed it

赋值

1.值传递

  1. // 赋值
  2. $a=3;
  3. // 更新
  4. $b=$a;

2.引用传递
在变量前 加 & 表示引用
使用引用传递,在值改变时,会同步更新原始变量的值
在引用传递时,并不是创建了一个新变量,而是通过引用的方式,用一个别名将原始变量引用,所以当值改变时,原始变量的值也会改变

  1. // 赋值
  2. $a=3;
  3. // 引用传递
  4. $b=&$a;
  5. $b=5;
  6. echo $a;

数据类型

1.基本类型
1.1 int 整数
1.2 float 浮点数
1.3 string 字符串
1.4 boolean 布尔类型

2.复合类型
将几个不同的基本类型值放在一起,叫复合类型
2.1数组:数组中可以放入不同的数据,是一种复合类型
2.2对象:对象也是一种复合类型

3.unll 类型(空类型)
当变量没赋值,直接赋值为null和被销毁时,返回null

4.资源类型
4.1文件路径,网址等都是资源类型

5.回调类型 callback
PHP中用字符串来传递函数,在PHP中,可以以任何方式传递函数,所以回调函数不止包括函数,还包括对象方法,静态方法等

call_user_func(调用的函数,参数列表) 调用用户的自定义函数(一般不推荐使用)

注释:下方定义了一个函数hallo,然后在后面调用call_user_func,在参数列表中直接将第一个函数和所需要的参数传入

  1. function hallo($gongzi){
  2. return $gongzi;
  3. };
  4. echo call_user_func('hallo', 1000);

call_user_func_array(调用的函数,参数列表) 这个调用中参数列表支持数组传入(尽量使用这个,特殊情况用第一个)

就比如下方定义了一个函数hallo ,在下方有一个数组, 在我们调用call_user_func_array 时,直接将所需要的第二个参数列表,以数组c的形式传入

  1. function hallo($gongzi,$renshu){
  2. return $gongzi+$renshu;
  3. }
  4. $c=[1000,2000];
  5. echo call_user_func_array('hallo',$c);

如果这个函数来自对象方法

注释:这里创建了一个类,里面有一个方法hallo
在下方new了一个实例对象obj
我们在调用时,将对象名和对象中的方法名放在第一个参数中,以数组的方式,将参数列表放在第二个参数中

  1. class Product
  2. {
  3. public function hallo($gong,$ren){
  4. return $gong+$ren;
  5. }
  6. }
  7. $obj=new Product();
  8. echo call_user_func_array([$obj,'hallo'],$c);

如果这个函数来自类方法

类方法调用,直接调用类名,不用调用对象名

  1. class Product
  2. {
  3. public static function hallo($gong,$ren){
  4. return $gong+$ren;
  5. }
  6. }
  7. echo call_user_func_array(['Product','hallo'],$c);

流程控制

分支

和JS一样,分支也分为单分支双分支和多分支
单分支

  1. $age = 15;
  2. if ($age >18){
  3. echo '可以看,还可以充钱开会员看';
  4. };

双分支

  1. $age = 15;
  2. if ($age >18){
  3. echo '可以看,还可以充钱开会员看';
  4. }else{
  5. echo '可以偷偷看';
  6. };

双分支三元运算符(语法糖)

  1. $age = 15;
  2. echo $age>18?'可以看,还可以开会员看':'可以偷偷看';

多分支
直接写语法糖了,反正原始的写法也用不着
多分支的语法糖是 switch(true){
case 允许条件
满足条件后运行的方法
break;
……(重复上面的语法)
default: 默认执行的方法
};
最后的default 是默认执行,就是在所有条件都不满足时,执行这个方法

  1. switch
  2. $age = 13;
  3. switch (true) {
  4. case $age >= 18 && $age < 30:
  5. echo "{$age}岁,彩礼,能按揭吗?<br>";
  6. break;
  7. case $age >= 30 && $age < 45:
  8. echo "{$age}岁,应该成个家了<br>";
  9. break;
  10. default:
  11. echo "{$age}岁,放学,我送你回家<br>";
  12. }

循环

循环的本质,也是分支
循环的三个条件:1.初始化循环条件 2.循环条件 3.更新循环条件(不更新就会死循环)

  1. // 循环目标
  2. $a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
  3. // count 可以获取当前数组的长度
  4. $c=count($a);
  5. // 初始化循环条件
  6. $i=0;
  7. while ($i<$c) {
  8. echo $a[$i];
  9. $i++;
  10. };

循环语法糖
for(初始化循环,循环条件,更新){执行方法};

  1. for($i=0;$i<$c;$i++) {
  2. echo $a[$i];
  3. };

continue 跳过某次循环,进入下一次循环(使用if来判断,满足条件就跳过)
break 提前结束循环 (也是使用if来判断,满足条件就直接停止循环)

数组遍历

数组类型

1.索引数组 :健名是数值,从0开始递增的正整数
2.关联数组 :健名是字符串

  1. $user=['name'=>'John', 'email'=>'john@example.com'];
  2. printf('<pre>%s</pre>', print_r($user,true));

数组遍历

forEach(数组名 as 健名=>对应的值){对象方法}

  1. $user=['name'=>'John', 'email'=>'john@example.com']
  2. foreach($user as $key=>$value) {
  3. echo $value."\n";
  4. }

二维数组

可以理解为一个大数组里面包含了多个小数组

  1. $user =[[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]];

可以使用foreach+table 的方法以表格的方式将二维数组渲染到页面
PhP中“.=”表示赋值运算符,是字符串连接的意思,该运算符的使用语法如“$string .= string2;”,可以实现字符串拼接效果。

  1. $d='我是';
  2. $d .= '小学生';
  3. echo $d;

运行结果就是第一个字符串拼接第二个字符串

使用模板语法 写一个学生信息管理系统

html和php混编
这里用二维数组模拟从数据库接收的结果

  1. <?php
  2. namespace _0809;
  3. // 用二维数组来模拟数据表查询结果
  4. $stus = [
  5. ['id' => 1, 'name' => '刘备', 'course' => 'js', 'score' => 83],
  6. ['id' => 2, 'name' => '关羽', 'course' => 'php', 'score' => 75],
  7. ['id' => 3, 'name' => '张飞', 'course' => 'js', 'score' => 52],
  8. ['id' => 4, 'name' => '孙权', 'course' => 'php', 'score' => 88],
  9. ['id' => 5, 'name' => '周瑜', 'course' => 'js', 'score' => 65],
  10. ['id' => 6, 'name' => '孔明', 'course' => 'php', 'score' => 53],
  11. ['id' => 7, 'name' => '赵云', 'course' => 'js', 'score' => 63],
  12. ['id' => 8, 'name' => '马超', 'course' => 'js', 'score' => 77],
  13. ['id' => 9, 'name' => '姜维', 'course' => 'php', 'score' => 93],
  14. ['id' => 10, 'name' => '黄忠', 'course' => 'js', 'score' => 41],
  15. ]
  16. ?>

html部分
html部分采用php和html混编的方式,可以理解成在html标签中插入PHP代码,将HTML标签中需要输出的内容,直接用PHP代码从数据库中调用出来。
这里面有几个需要注意的地方
1.比如for或者if循环执行方法需要用大括号包裹,如果在混编时,开始大括号都用 : 表示,结束大括号用 endxxx 表示 例如
1.1 foreach - endforeach
1.2 for -> endfor
1.3 if -> endif
1.4 switch -> endswitch
2.在数据调用时候,可以使用<?= xxx?>的短语法替代<?php echo xxx?> 简化语法
3.php代码可以包裹在多个PHP标签中,会自动拼接运行,如果像下方混编的时候,会和HTML标签穿插运行在对应的标签中直接输出PHP调用的数据

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>学生信息管理系统</title>
  8. <style>
  9. table {
  10. border-collapse: collapse;
  11. width: 360px;
  12. text-align: center;
  13. }
  14. table th,
  15. table td {
  16. border: 1px solid #000;
  17. padding: 5px;
  18. }
  19. table caption {
  20. font-size: 1.3em;
  21. }
  22. table thead {
  23. background-color: lightcyan;
  24. }
  25. .active {
  26. color: red;
  27. }
  28. </style>
  29. </head>
  30. <body>
  31. <!-- 表格 -->
  32. <table>
  33. <!-- 表名 -->
  34. <caption>学生成绩表</caption>
  35. <!-- 头部 -->
  36. <thead>
  37. <tr>
  38. <th>学号</th>
  39. <th>姓名</th>
  40. <th>课程</th>
  41. <th>成绩</th>
  42. </tr>
  43. </thead>
  44. <!-- 表格内容 -->
  45. <tbody>
  46. <?php
  47. // 遍历数据表的内容,并渲染到页面中
  48. // { => :
  49. // } => endforeach, endfor, ...
  50. foreach ($stus as $stu) : ?>
  51. <tr>
  52. <?php if ($stu['score'] >= 70) : ?>
  53. <td><?=$stu['id']?>
  54. </td>
  55. <td><?=$stu['name']?>
  56. </td>
  57. <td><?=$stu['course']?>
  58. </td>
  59. <td><?=$stu['score']?>
  60. </td>
  61. <?php endif ?>
  62. </tr>
  63. <?php endforeach ?>
  64. <?php
  65. /**
  66. *
  67. * 流程控制的替代语法/模板语法
  68. * 1. foreach - endforeach
  69. * 2. for -> endfor
  70. * 3. if -> endif
  71. * 4. switch -> endswitch
  72. */
  73. ?>
  74. </tbody>
  75. </table>
  76. </body>
  77. </html>
Correcting teacher:PHPzPHPz

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
0 comments
Author's latest blog post