博客列表 >函数的类型、返回值和参数

函数的类型、返回值和参数

赵大叔
赵大叔原创
2020年04月22日 00:11:051745浏览

一、函数的四种类型

1、函数语法:

  1. /*
  2. function '函数名' {
  3. '函数体'
  4. }
  5. */

2、函数类型:

序号 类型 语法 描述
1 自定义函数 function getName(){...} 用户根据业务需求自己创建
2 系统函数 substr(), count()... 也叫预定义函数,不必声明直接调用
3 可变函数 $funcName(); 函数名使用变量表示
4 匿名函数 $f = function (){...} 也叫”闭包”或”函数表达式”,常用做回调处理

3、代码演示

  1. <?php
  2. // 1. 自定义函数
  3. /*function inpre(array $arr) : array
  4. {
  5. echo '<pre>';
  6. print_r($arr);
  7. echo '</pre>';
  8. }
  9. $arr = ['html', 'php', 'css', 'js'];
  10. inpre($arr);
  11. echo '<hr>';*/
  12. // 2. 系统函数
  13. // `strtoupper();`: 将字符串转化为大写
  14. $str = 'danh sach cong nhan moi';
  15. echo strtoupper($str) .'<br>';
  16. // `ucfirst();`: 将字符串的首字母转换为大写
  17. $str = 'danh sach cong nhan moi';
  18. echo ucfirst($str);
  19. echo '<hr>';
  20. // 3. 可变函数
  21. $getTien = function(float $gia, float $so):float
  22. {
  23. return $gia * $so;
  24. };
  25. echo $getTien(10000, 6);
  26. echo '<hr>';
  27. // 4. 匿名函数: 访问父作用域变量
  28. function demo2(float $discont)
  29. {
  30. return function(float $gia, float $so) use($discont) :float
  31. {
  32. return $gia * $so * $discont;
  33. };
  34. }
  35. echo demo2(0.8)(5000, 4);

效果截图:

二、函数的返回值的四种形式

  • 函数必须要有返回值
  • 函数必须是遵守单值返回原则
  • return可以返回任何类型的值,包括函数类型
  • return遇到}也会返回, 默认返回null

1、多值返回方法

序号 返回值类型 描述
1 string 字符串拼接
2 array 数组
3 json JSON 字符串
4 serialize 序列化字符串

json 和序列化,使用时需要进行解码操作

2、代码演示

  1. <?php
  2. // 函数返回多值的方法
  3. // 1. 字符串拼装
  4. function demo3() : string
  5. {
  6. $quocgia = 'VietNam';
  7. $thudo = 'HaNoi';
  8. return '国家: ' .$quocgia .', 首都: ' . $thudo;
  9. }
  10. echo demo3();
  11. echo '<hr>';
  12. // 2. 数组
  13. function demo31($gia, $so) : string
  14. {
  15. $arr = [$gia + $so, $gia - $so, $gia * $so, $gia / $so];
  16. return print_r($arr);
  17. }
  18. demo31(200, 100);
  19. echo '<hr>';
  20. // 3. JSON字符串
  21. // json: 是用js对象字面量的方式来表示数据,是一种轻量级通用的数据交换或传输格式
  22. // json本质上就是一个具有一定结构和格式的字符串, 不过这种格式得到了公认,几乎所有编程语言都有支持它的接口
  23. function demo32() : string
  24. {
  25. // json_encode(): 将php数据编码为json格式的字符串返回
  26. return json_encode(['name'=>'dashu', 'mail'=>'dashu@qq.com']);
  27. }
  28. $data = demo32();
  29. echo $data .'<br>';
  30. // 将json格式的字符串还原/解析为php对象/数组
  31. $var = json_decode($data, true);
  32. print_r($var);
  33. echo '<hr>';
  34. // 4. 序列化: 字符串
  35. function demo33() : string
  36. {
  37. return serialize(['name'=>'dashu', 'mail'=>'dashu@qq.com']);
  38. }
  39. echo demo33() .'<br>';
  40. // 反序列化才可以使用
  41. $arr =unserialize(demo33());
  42. print_r($arr);

效果截图:

三、函数的四种参数

序号 类型 描述
1 值参数 默认传参方式
2 引用参数 改变原始调用参数值
3 默认参数 调用时允许省略的参数
4 剩余参数 调用参数数量不确定

代码演示

  1. <?php
  2. // 函数参数
  3. // 1. 值参数
  4. function demo4(float $so) : float
  5. {
  6. return $so *= 8;
  7. }
  8. $value = 100;
  9. echo demo4($value) , '<br>';
  10. // 在函数中改变了调用参数的值,但原始调用参数并没有发生变化
  11. echo $value;
  12. echo '<hr>';
  13. // 2. 引用参数
  14. function demo41(float &$so) : float
  15. {
  16. return $so *= 8;
  17. }
  18. $value = 100;
  19. echo demo41($value) , '<br>';
  20. // 如果在参数前面使用了取地址符,则会改变原始调用参数的值
  21. echo $value;
  22. echo '<hr>';
  23. // 3. 默认参数:参数有默认值
  24. // 默认参数必须写在必选参数的后面
  25. function demo42(float $a, float $b, string $opt = '+' )
  26. {
  27. $res = 0;
  28. switch ($opt) {
  29. case '+':
  30. $res = "$a + $b = " . ($a + $b);
  31. break;
  32. case '-':
  33. $res = "$a - $b = " . ($a - $b);
  34. break;
  35. case '*':
  36. $res = "$a * $b = " . ($a * $b);
  37. break;
  38. case '/':
  39. $res = "$a / $b = " . ($a / $b);
  40. break;
  41. default:
  42. $res = '非法操作符';
  43. }
  44. return $res;
  45. }
  46. echo demo42(10, 20), '<br>';
  47. echo demo42(10, 20, '*'), '<br>';
  48. echo demo42(10, 20, '#'), '<br>';
  49. echo '<hr>';
  50. // 4. 剩余参数
  51. // ...: 参数归纳:
  52. function demo43(...$args ) : float
  53. {
  54. // return $args;
  55. return array_sum($args);
  56. // return array_product($args);
  57. }
  58. // print_r(demo6(3,4,7,8,24));
  59. // echo demo6(1,2,3,4,5,6,9,22,67), '<br>';
  60. // 调用参数
  61. $arr = [4,6,7,45,63,99,22,67];
  62. // ...:
  63. // 1. 用在函数的形式参数列表中,表示"收集",将多个离散的参数打包到一个数组中处理
  64. // 2. 用在函数的调用参数列表中,表示"展开",还原将一个数组展开成一个个离散的值
  65. print_r(demo43(...$arr));
  66. echo '<hr>';

效果截图:

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