博客列表 >第4章 0128-史上最全的函数讲解,学习心得、笔记(函数的作用域、使用回调、函数的返回值, 多值、序列化)

第4章 0128-史上最全的函数讲解,学习心得、笔记(函数的作用域、使用回调、函数的返回值, 多值、序列化)

努力工作--周工--Robin
努力工作--周工--Robin原创
2021年02月17日 17:49:45573浏览

今天所学心得、笔记

示例代码截图

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));

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议