Blogger Information
Blog 119
fans 3
comment 1
visits 94356
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
函数的类型、返回值和参数
赵大叔
Original
1746 people have browsed it

一、函数的四种类型

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

效果截图:

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:函数的类型,返回值,参数都有四种类型, 是巧合, 也好记
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post