Blogger Information
Blog 35
fans 0
comment 0
visits 16930
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0809-函数调用、分支循环、数组遍历和替代语法/模板语法
三九三伏
Original
566 people have browsed it

一、PHP函数调用

除了直接调用

  1. 函数名(参数);

还可以使用如下两种调用:

  1. call_user_func(‘函数名’,参数)
  2. call_user_func_array(‘函数名’,[数组])即使有一个参数也推荐使用这种。

数组形式的参数列表有三个来源:
1、用户自定义的函数中的参数。
2、对象方法
3、类方法

示例代码:

  1. <?php
  2. $obj = new class(15000){
  3. public float $salary;
  4. public function __construct(float $salary)
  5. {
  6. $this->salary = $salary;
  7. }
  8. };
  9. echo gettype($obj). '<br>';
  10. echo $obj->salary. '<br>';
  11. function f(string $name): string{
  12. return 'hello'. $name;
  13. };
  14. echo f('网络').'<br>';
  15. echo call_user_func('f','电脑').'<br>';
  16. class demo1 {
  17. public function hello(string $name):string{
  18. return 'hello,'.$name;
  19. }
  20. }
  21. $obj = new demo1;
  22. // echo call_user_func([$obj, 'hello'],'类').'<br>';
  23. echo call_user_func_array([$obj, 'hello'],['类da']).'<br>';
  24. class demo2 {
  25. public static function hello(string $name):string{
  26. return 'hello,'.$name;
  27. }
  28. }
  29. echo call_user_func_array(['demo2','hello'],['路人甲']);

二、分支与循环

1. 分支

  1. <?php
  2. namespace _0809;
  3. $salary = 6000;
  4. // 流程控制:分支
  5. // 单分支
  6. echo '------单分支------'.'<br>';
  7. if ($salary <= 6000){
  8. echo "{$salary} 低于全国平均水平!<br>";
  9. echo '<br>';
  10. }
  11. $salary = 7000;
  12. // 双分支
  13. echo '------双分支------'.'<br>';
  14. if($salary <= 6000){
  15. echo $salary.'低于全国平均水平!'.'<br>';
  16. echo '<br>';
  17. }else{
  18. echo $salary.'高于全国平均水平!'.'<br>';
  19. echo '<br>';
  20. }
  21. // 双分支语法糖:三元运算符
  22. echo '------双分支语法糖------'.'<br>';
  23. echo $salary > 6000 ? $salary.'高于全国平均水平!'.'<br>'.'<br>':$salary.'高于全国平均水平!'.'<br>'.'<br>';
  24. $salary = 15000;
  25. // 多分支
  26. echo '------多分支------'.'<br>';
  27. if($salary < 0){
  28. echo $salary.'非法数值'.'<br>';
  29. echo '<br>';
  30. }
  31. elseif($salary <= 6000){
  32. echo $salary.'是全国平均水平!'.'<br>';
  33. echo '<br>';
  34. }elseif($salary > 6000 && $salary <= 20000){
  35. echo $salary.'是全国一般水平!'.'<br>';
  36. echo '<br>';
  37. }elseif($salary > 20000 && $salary <= 50000){
  38. echo $salary.'是全国中高水平!'.'<br>';
  39. echo '<br>';
  40. }else{
  41. echo $salary.'是全国顶尖水平!'.'<br>';
  42. echo '<br>';
  43. }
  44. $salary = 51000;
  45. // 多分支语法糖:switch
  46. echo '------多分支语法糖------'.'<br>';
  47. Switch(true){
  48. case $salary <= 6000:
  49. echo $salary.'是全国平均水平!'.'<br>';
  50. echo '<br>';
  51. break;
  52. case $salary > 6000 && $salary <= 20000:
  53. echo $salary.'是全国平均水平!'.'<br>';
  54. echo '<br>';
  55. break;
  56. case $salary > 20000 && $salary <= 50000:
  57. echo $salary.'是全国中高水平!'.'<br>';
  58. echo '<br>';
  59. break;
  60. default:
  61. echo "{$salary}是全国顶尖水平!<br>";echo '<br>';
  62. }

2. 循环

  1. <?php
  2. namespace _0809;
  3. //for循环
  4. $colors = ['红','黄','蓝'];
  5. echo '数组长度'.count($colors).'<br>';
  6. $list = '<ul style="border: 1px solid red">';
  7. for($i =0; $i < count($colors); $i++){
  8. $list .= "<li>{$colors[$i]}</li>";
  9. }
  10. $list .= '</ul>';
  11. echo $list;
  12. // while循环
  13. $i = 0;
  14. $list = '<ul style="border: 1px solid yellow">';
  15. while($i < count($colors)){
  16. $list .= "<li>{$colors[$i]}</li>";
  17. $i++;
  18. }
  19. $list .= '</ul>';
  20. echo $list;
  21. // do while循环
  22. $i = 0;
  23. $list = '<ul style="border: 1px solid green">';
  24. do {
  25. $list .= "<li>{$colors[$i]}</li>";
  26. $i++;
  27. }while($i < count($colors));
  28. $list .= '</ul>';
  29. echo $list;

三、数组遍历和模板语法

1. 数组遍历

  1. <?php
  2. namespace _0809;
  3. // $colors = ['红','黄','蓝'];
  4. // print_r($colors);
  5. // printf('<pre>%s</pre>',print_r($colors,true));
  6. // 索引数组的完整声明语法
  7. // $colors = ['0'=>'红','1'=>'黄','2'=>'蓝'];
  8. // printf('<pre>%s</pre>',print_r($colors,true));
  9. // // 关联数组,键名是字符串。
  10. // $user = ['id'=>'1','name'=>'大黄','score'=>'90'];
  11. // printf('<pre>%s</pre>',print_r($user,true));
  12. // echo '<hr>';
  13. // // 数组专用遍历foreach
  14. // // foreach($arr as $key=>$value){...}
  15. // foreach($user as $value){
  16. // echo $value.'<br>';
  17. // }
  18. // foreach($user as $key=>$value){
  19. // // echo $key.'=>'.$value.'<br>';
  20. // printf('[%s]=>%s <br>',$key,$value);
  21. // }
  22. // 二维数组
  23. // php用二维数组来表示从数据表中查询到的结果
  24. $users = [
  25. 0 => ['id'=>'0','name'=>'大蓝','gender'=>'0','score'=>'91'],
  26. 1 => ['id'=>'1','name'=>'大黄','gender'=>'1','score'=>'90']
  27. ];
  28. // printf('<pre>%s</pre>', print_r($users,true));
  29. // foreach + table 渲染到页面
  30. $table = '<table border="1px" width="400px" cellspacing="0" cellpadding="3px" align="center">';
  31. $table .= '<caption>用户信息表</caption>';
  32. $table .= '<thead bgcolor="#ccc">
  33. <tr>
  34. <th>编号</th>
  35. <th>用户名</th>
  36. <th>性别</th>
  37. <th>分数</th>
  38. </tr>
  39. </thead>';
  40. $table .= '<tbody align="center">';
  41. foreach($users as $user){
  42. // print_r($user);
  43. $table .= '<tr>';
  44. $table .= "<td>{$user['id']}</td>";
  45. $table .= '<td>'.$user['name'].'</td>';
  46. $table .= '<td>'.($user['gender'] ? '女':'男').'</td>';
  47. $table .= '<td>'.$user['score'].'</td>';
  48. $table .= '</tr>';
  49. }
  50. $table .= '</tbody>';
  51. $table .= '</table>';
  52. echo $table;

2. 模板语法

流程控制的替代语法/模板语法

  1. foreach -> endforeach
  2. for -> endfor
  3. if -> endif
  4. switch -> endswitch(Switch和第一个case之间不能有空格/换行,否则会报错。)
  1. <?php
  2. namespace _0809;
  3. $stus = [
  4. ['id' => 1, 'name' => '刘备', 'course' => 'js', 'score' => 83],
  5. ['id' => 2, 'name' => '关羽', 'course' => 'php', 'score' => 75],
  6. ['id' => 3, 'name' => '张飞', 'course' => 'js', 'score' => 52],
  7. ['id' => 4, 'name' => '孙权', 'course' => 'php', 'score' => 88],
  8. ['id' => 5, 'name' => '周瑜', 'course' => 'js', 'score' => 65],
  9. ['id' => 6, 'name' => '孔明', 'course' => 'php', 'score' => 53],
  10. ['id' => 7, 'name' => '赵云', 'course' => 'js', 'score' => 63],
  11. ['id' => 8, 'name' => '马超', 'course' => 'js', 'score' => 77],
  12. ['id' => 9, 'name' => '姜维', 'course' => 'php', 'score' => 93],
  13. ['id' => 10, 'name' => '黄忠', 'course' => 'js', 'score' => 41],
  14. ]
  15. ?>
  16. <style>
  17. table {
  18. width: 360px;
  19. text-align: center;
  20. border-collapse: collapse;
  21. }
  22. table caption {
  23. font-size: 1.3em;
  24. }
  25. table thead {
  26. background-color: lightcyan;
  27. }
  28. table th,
  29. table td, {
  30. border:1px solid #000;
  31. padding:5px;
  32. /* text-align: center; */
  33. }
  34. .active {
  35. color: red;
  36. }
  37. </style>
  38. <!DOCTYPE html>
  39. <html lang="en">
  40. <head>
  41. <meta charset="UTF-8">
  42. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  43. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  44. <title>Document</title>
  45. </head>
  46. <body>
  47. <table>
  48. <caption>学生成绩表</caption>
  49. <thead>
  50. <th>编号</th>
  51. <th>姓名</th>
  52. <th>课程</th>
  53. <th>成绩</th>
  54. </thead>
  55. <tbody>
  56. <!-- 遍历数据表的内容,渲染到页面中。 -->
  57. <?php foreach($stus as $stu): ?>
  58. <tr>
  59. <!-- <td><?=$stu['id'] ?></td>
  60. <td><?=$stu['name'] ?></td>
  61. <td><?=$stu['course'] ?></td>
  62. <td><?=$stu['score']?></td> -->
  63. <!-- <?php if($stu['score'] > 70): ?>
  64. <td><?=$stu['id'] ?></td>
  65. <td><?=$stu['name'] ?></td>
  66. <td><?=$stu['course'] ?></td>
  67. <td><?=$stu['score']?></td>
  68. <?php endif ?> -->
  69. <?php switch(true): ?><?php case $stu['score'] > 70: ?>
  70. <td><?=$stu['id'] ?></td>
  71. <td><?=$stu['name'] ?></td>
  72. <td><?=$stu['course'] ?></td>
  73. <td><?=$stu['score']?></td>
  74. <?php endswitch?>
  75. </tr>
  76. <?php endforeach?>
  77. </tbody>
  78. </table>
  79. </body>
  80. </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