博客列表 >细说函数的构成

细说函数的构成

暝皑祯π_π
暝皑祯π_π原创
2020年04月23日 16:33:02839浏览
  1. <?php
  2. // 自定义函数
  3. $number = 5;
  4. $name = ['zhao' , 'qian' , 'shun' ,' li' ,' chen' , 'wamg' ,'zhang'];
  5. function unit(int $number): string
  6. {
  7. // global连接全局变量
  8. global $name;
  9. $number = $name[$number-1];
  10. return $number;
  11. }
  12. // 调用函数
  13. echo unit(2);
  14. echo '<hr>';
  15. // 系统函数
  16. // 系统函数是已经定义好的函数,可以直接调用
  17. // 把二进制转换为16进制的函数
  18. echo bin2hex('chen') . '<hr>';
  19. // 获得当前工作目录
  20. echo getcwd();
  21. echo '<hr>';
  22. // 可变函数,使用变量名作为函数名
  23. // 当变量的后面有圆括号时,系统自动搜索是否有同名的函数并尝试调用它
  24. // 可以在实现回调函数,函数表应用
  25. $a = 'unit';
  26. echo $a(1);
  27. echo '<hr>';
  28. // 匿名函数:也叫闭包
  29. // 可以作为变量的值来使用
  30. // 'use':继承父级作用域中的变量。和命名函数中的'global'一样使用
  31. $name = ['zhao' , 'qian' , 'shun' ,' li' ,' chen' , 'wamg' ,'zhang'];
  32. $a = function ($number) use ($name): string
  33. {
  34. return $number = $name[$number-1];
  35. };
  36. // 直接用变量加参数调用
  37. echo $a(5);
  38. echo '<hr>';
  39. // 返回值 多个值的返回方式
  40. // 字符串拼装
  41. function unit1(): string
  42. {
  43. $number = 1;
  44. $name = 'xiaoming';
  45. return $number. '号是' . $name;
  46. }
  47. echo unit1();
  48. echo '<hr>';
  49. // 通过数组返回
  50. function unit2(): array
  51. {
  52. $number = 1;
  53. $name = 'xiaoming';
  54. $gender = 'man';
  55. return [$number , $name , $gender];
  56. }
  57. print_r(unit2());
  58. echo '<hr>';
  59. // JSON:json_encode()
  60. function unit3(): string
  61. {
  62. $number = 1;
  63. $name = 'xiaoming';
  64. $gender = 'man';
  65. // 也可以返回字符串:return json_encode($number);
  66. return json_encode([$number , $name , $gender]);
  67. }
  68. echo unit3();
  69. echo '<hr>';
  70. // 序列化:serialize()
  71. function unit4(): string
  72. {
  73. $number = 1;
  74. $name = 'xiaoming';
  75. $gender = 'man';
  76. // 也可以返回字符串:return serialize($number);
  77. return serialize([$number , $name , $gender]);
  78. }
  79. echo unit4();
  80. // 返回的都是字符串,只是显示的格式不一样,'JSON'和序列化需要解码
  81. echo '<hr>';
  82. // 参数
  83. // 值传递:默认
  84. // 只调用它的值在函数内部进行计算,不改变原始值。
  85. $work = 'php';
  86. function g($work){
  87. return $work = $work . '中文网';
  88. }
  89. $l = g($work);
  90. // 输出:php中文网
  91. echo $l;
  92. echo '<hr>';
  93. // 输出:php
  94. echo $work;
  95. echo '<hr>';
  96. // 引用传递
  97. // 添加取地址符&,在改变函数内部的值时,所引用的原始值也一起被改变
  98. $work = 'php';
  99. function g1(&$work){
  100. return $work =$work . '中文网';
  101. }
  102. $l = g1($work);
  103. // 输出:php中文网
  104. echo $l;
  105. echo '<hr>';
  106. // 输出:php
  107. echo $work;
  108. echo '<hr>';
  109. // 默认参数
  110. // 必须写在参数的最后面
  111. // 默认值必须是常量表达式,不能是诸如变量,类成员,或者函数调用等
  112. function g2($c , $work = '中文网'){
  113. return $c . $work;
  114. }
  115. echo g('php');
  116. echo '<hr>';
  117. // 剩余参数
  118. // '...'参数归纳
  119. // 用在函数的形式参数列表中,表示"收集",将多个离散的参数打包到一个数组中处理
  120. function are(...$por):array
  121. {
  122. return $por;
  123. }
  124. print_r( are(1,2,3,4,5,6,7,8,9));
  125. echo '<hr>';
  126. // 用在函数的调用参数列表中,表示"展开",还原将一个数组展开成一个个离散的值
  127. $gpr = [1,2,3,4,5,6,7,8,9];
  128. function are2(...$gpr):array
  129. {
  130. return $gpr;
  131. }
  132. print_r(are2(...$gpr));

总结

  • 函数是可以在程序中重复使用的语句块
  • 今天主要学习函数的组成

  • 函数名称:命名的和匿名的,系统的和自定义的,可变的和不变的,以及globalhe use的用法

  • 函数的返回值:返回的都是字符串,只是显示的格式不一样,’JSON’和序列化需要解码

  • 函数传递参数的四种方式,分别是值传递、引用传递(&)、默认参数和剩余参数(…)。

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