搜索
博主信息
博文 40
粉丝 0
评论 1
访问量 31317
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
第4章 0128-史上最全的函数讲解,学习心得、笔记(函数的作用域、使用回调、函数的返回值, 多值、序列化)
努力工作--周工--Robin
原创
750人浏览过

今天所学心得、笔记

示例代码截图

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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学