博客列表 >函数返回值和回调函数

函数返回值和回调函数

移动用户-5642790
移动用户-5642790原创
2022年01月22日 18:12:51845浏览

函数返回值和回调函数

  1. // !设置时区,有个类同查询时区的函数
  2. date_default_timezone_set("PRC");
  3. // 查询时区函数
  4. echo date_default_timezone_get();
  5. // todo命名函数,$a与$b为形参,调用时需传入实际参数
  6. function sum($a,$b){
  7. return $a+$b;
  8. };
  9. // 调用命名函数
  10. echo sum(10,20);
  11. echo '<pre>';
  12. echo date("Y-m-d H:i:s");
  13. echo '<pre>';
  14. // * ()括号内的string表示参数只能传字符串类型,后面的string表示返回值只能是字符串类型
  15. function total(string $total):string{
  16. return "{$total}的优质商品";
  17. };
  18. // 因上面的函数指定了传参类型,调用时只能传指定类型参数
  19. echo total('物美价廉');
  20. echo total(10);//就算传入整型也会自动被转换成字符串型
  21. echo '<pre>';
  22. /**
  23. * 参数:可选的,对外提供一个接口,供函数调用者按照自已的意愿改变函数体内的执行行为
  24. *参数 有形参和实参
  25. * 默认参数就是有默认值的参数,如果不传或少传就会默认参数的值
  26. * 参数是从左往右求值,所以默认参数要放在右边
  27. */
  28. function getAmount(&$price,$num,$discount=0.9){
  29. // *=是$price = $price*$discount的简写
  30. $price *= $discount;
  31. $amount = $price*$num;
  32. return "总共需要支付{$amount}";
  33. };
  34. // *如果函数使用&引用符,将会改变全局变量的值
  35. $price = 800;
  36. $num = 5;
  37. $discount = 0.8;
  38. echo getAmount($price,$num,$discount);
  39. //因函数使用了&引用符,所以变量的值将会改变输出
  40. echo $price;
  41. // !函数返回值,可以任意类型
  42. function test(){
  43. // 返回json类型的数据,后面的320代表不转义中文和\
  44. return json_encode(['id'=>1,'name'=>'转json格式'],320);
  45. // 返回表达式布尔值
  46. return '1'==1;
  47. // 返回MD5加密字符串
  48. return md5('123456');
  49. // 返回对象
  50. return new stdClass();
  51. // 返回多维数组
  52. return array([
  53. ['id'=>1,'name'=>'张三','conten'=>'多维数组'],
  54. ['id'=>2,'name'=>'李四','conten'=>'多维数组'],
  55. [ 'id'=>3,'name'=>'王五','conten'=>'多维数组'],
  56. ]);
  57. return array('id'=>1,'name'=>'张三','conten'=>'关联数组');
  58. return array('123','索引数组');//返回关联数组
  59. return '返回字符串';
  60. // 返回浮点型
  61. return 25.55;
  62. return 1;//返回整型
  63. };
  64. $res = test();
  65. var_dump($res);
  66. // !命名函数全局变量的调用方法
  67. $name = '张老师';
  68. $tel = 13800138000;
  69. function test1(){
  70. /**
  71. * 函数内要调用全局中的变量方法
  72. * 1 使用全局变量引入global
  73. * 2 使用超全局变量$GLOBALS['name']
  74. * */
  75. // 全局引用
  76. global $name,$tel;
  77. return "{$name}的手机号码是{$tel}";
  78. // 超全局调用
  79. return "{$GLOBALS['name']}的手机号码是:{$GLOBALS['tel']}";
  80. };
  81. // 调用函数
  82. echo test1();
  83. /**
  84. * !匿名函数或叫回调函数的全局变量调用方法
  85. *匿名函数调用全局方法 use (全局变量名)
  86. */
  87. //
  88. $test2 = function () use ($name,$tel){
  89. return "{$name}的手机号码是:{$tel}";
  90. };
  91. // 调用匿名函数
  92. echo $test2();
  93. // 回调函数调用方法Closure 代表闭包
  94. echo "<pre>";
  95. function test3( Closure $func,$qq){
  96. $msg = $func();
  97. return "{$msg}<br>QQ号码是:{$qq}";
  98. };
  99. echo test3($test2,'123456');
  100. echo '<pre>';
  101. $arr2 = [1,10,30,45,28,30,22];
  102. $arr = range(0,500);
  103. $odd =function($arr){
  104. for($i = 0 ; $i < count($arr); $i++){
  105. if($arr[$i] % 2 ==0){
  106. $newArr[] = $arr[$i];
  107. }
  108. }
  109. return $newArr;
  110. };
  111. // 第一个参数为匿名函数,第二个为传任意数组
  112. function newSum($func,$arr){
  113. $newArr = $func($arr);
  114. return array_sum($newArr);
  115. };
  116. // todo 调用传参第一个是匿名函数的变量名,第二个参数为任意数组
  117. var_dump(newSum($odd,$arr));
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议