Blogger Information
Blog 40
fans 0
comment 1
visits 24374
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
第4章 0128-史上最全的函数讲解,学习心得、笔记(函数的作用域、使用回调、函数的返回值, 多值、序列化)
努力工作--周工--Robin
Original
574 people have browsed it

今天所学心得、笔记

示例代码截图

1、函数的作用域

  1. $studentName = "小明";
  2. $score = 85;
  3. //由于作用域不同,函数内无法访问外部变量
  4. function demo1(): string {
  5. $res = '';
  6. return $res .= '学生姓名 : ' . $studentName. '------学生成绩 = ' . $score.'<br>';
  7. }
  8. echo demo1();
  9. //使用global关键字申明全局变量,使用$GLOBALS超全局数组,变为全局变量
  10. function demo2(): string {
  11. $res = '';
  12. global $studentName;
  13. return $res .= '学生姓名 : ' . $studentName. '------学生成绩 = ' . $GLOBALS['score'].'<br>';
  14. }
  15. echo demo2();
  16. //使用闭包访问外部函数
  17. $demo3 = function() use ($studentName, $score): string {
  18. $res = '';
  19. return $res .= '学生姓名 : ' . $studentName. '------学生成绩 = ' . $score .'<br>';
  20. };
  21. echo $demo3();

示例代码截图

2、使用回调、函数的返回值, 多值

  1. function demo4(string $myName): string {
  2. return "大家好,我是{$myName},请大家关照...";
  3. // return sprintf("大家好,我是%s,请大家关照...", $myName);
  4. }
  5. echo call_user_func_array('demo4',['小明']);
  6. echo '<br>';
  7. // 异步函数, 调用数据库
  8. $sql = 'SELECT * FROM `bk_cate` LIMIT 1';
  9. $demo5 = function ($dsn, $username, $password) use ($sql) {
  10. $pdo = new PDO($dsn, $username, $password);
  11. $stmt = $pdo->prepare($sql);
  12. $stmt->execute();
  13. return $stmt->fetchAll(PDO::FETCH_ASSOC);
  14. };
  15. $res = call_user_func_array($demo5, ['mysql:dbname=bick','root','zdm12345678']);
  16. print_r($res);
  17. echo '<br>';
  18. // 异步函数, 调用对象方法
  19. class Students {
  20. // 实例方法
  21. public function read(string $book): string {
  22. return "学生们正在读{$book}方面的书籍...";
  23. }
  24. // 静态方法: 类调用
  25. public static function run(string $site): string {
  26. return "学生们正在{$site}跑步...";
  27. }
  28. }
  29. // 调用实例方法
  30. //数组
  31. $res = call_user_func_array([new Students, 'read'], ['科学研究']);
  32. echo $res; echo '<br>';
  33. $res = call_user_func_array('Students::run', ['田径场']);
  34. echo $res;
  35. echo '<hr>';
  36. // 函数的返回值, 多值
  37. //数组
  38. function demo6(): array {
  39. return ['username' => 'tom', 'password' => '12345678'];
  40. }
  41. var_dump(demo6());
  42. echo '<br>';
  43. // 对象
  44. function demo7() : object
  45. {
  46. // 匿名类
  47. return new class ()
  48. {
  49. public $username = 'tom';
  50. public $password = '12345678';
  51. };
  52. }
  53. $res = demo7();
  54. echo $res->username, '------' ,$res->password;

示例代码截图

3、序列化

  1. //PHP专用序列化函数
  2. function demo8(): string {
  3. return serialize(['username' => 'tom', 'password' => '壹贰叁肆伍陆柒捌']);
  4. }
  5. echo demo8(); echo '<br>';
  6. // PHP专用函数, 反序列化
  7. var_dump(unserialize(demo8()));
  8. echo '<br>';
  9. //序列化,通用的json格式的字符串
  10. //使用JSON_UNESCAPED_UNICODE参数,使序列化后显示汉字
  11. function demo9(): string {
  12. return json_encode(['username' => 'tom', 'password' => '壹贰叁肆伍陆柒捌'],JSON_UNESCAPED_UNICODE);
  13. }
  14. echo demo9(); echo '<br>';
  15. //反序列化,json格式的字符串
  16. // 默认将外部的json解析成object对象类型
  17. var_dump(json_decode(demo9())); echo '<br>';
  18. // 给 json_decode()传入第二个参数 : true,也可以使用数组方式
  19. var_dump(json_decode(demo9(), true));

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
0 comments