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

PHP:函数的类型、返回值、参数

楷
原创
2020年04月22日 15:49:58495浏览

1. 函数类型

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

案例

  1. <?php
  2. // 函数
  3. // 1. 自定义函数
  4. function totalCost($unitcost,$number)
  5. {
  6. return $unitcost*$number;
  7. }
  8. echo '合计金额:'.totalCost(12,10);
  9. echo '<hr>';
  10. // 2. 系统函数
  11. echo implode (' ', ['我爱我的祖国','一刻也不能分割']);
  12. echo '<hr>';
  13. // 3. 可变函数
  14. $money = 'totalCost';
  15. echo '3斤菜心的合计金额:'.$money(4.5,3);
  16. echo '<hr>';
  17. // 4. 匿名函数
  18. $money=function($discount)
  19. {
  20. return function ($unicost,$number)use($discount):float
  21. {
  22. $total = $unicost*$number;
  23. return $total >= 100 ? $total * $discount:$total;
  24. };
  25. };
  26. echo '10斤以上团购价:'.$money(0.9)(12,20).' 原价:'.$money(1)(12,20)
  27. ;

运行结果

3. 返回值

  • 函数必须要有返回值
  • 函数必须是遵守单值返回原则
序号 场景 描述
1 return 可以返回任何类型的值,包括函数类型
2 return 遇到}也会返回, 默认返回null
  • 如果需要返回多个值,可以通过以下手段
序号 返回值类型 描述
1 string 字符串拼接
2 array 数组
3 json JSON 字符串
4 serialize 序列化字符串

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

案例

  1. <?php
  2. // 返回值
  3. // 原则: 单值返回
  4. // 如果需要返回多值
  5. // 1. 字符串拼装
  6. // 2. 数组
  7. // 3. JSON字符串
  8. // 4. 序列化: 字符串
  9. // 1. 字符串拼装
  10. function example1():string{
  11. $who = '我';
  12. $how = '用政府发的消费券';
  13. $what = '买电视机';
  14. return $who.$how.$what.'。';
  15. }
  16. echo example1();
  17. echo '<hr>';
  18. // 2. 数组
  19. function example2():array{
  20. return ['who'=>'我','how'=>'用政府消费券','what'=>'买电视机。'];
  21. }
  22. // echo example2();
  23. $res = print_r(example2(),true);
  24. printf('<pre>%s</pre>',$res);
  25. echo '<hr>';
  26. // 3. JSON字符串
  27. function example3():string{
  28. return json_encode(['who'=>'我','how'=>'用政府消费券','what'=>'买电视机。']);
  29. }
  30. echo example3();
  31. echo '<br>';
  32. $data = example3();
  33. // 将json格式的字符串还原/解析为php对象/数组
  34. $var = json_decode($data, true);
  35. print_r($var);
  36. echo '<hr>';
  37. // 4. 序列化: 字符串
  38. function example4():string{
  39. return serialize(['who'=>'我','how'=>'用政府消费券','what'=>'买电视机。']);
  40. }
  41. echo example4();
  42. echo '<br>';
  43. $unser = unserialize(example4());
  44. print_r($unser);
  45. echo '<br>';
  46. printf('<pre>%s</pre>',print_r($unser,true));
  47. echo '<hr>';

运行结果

4. 参数

  • 调用者可以通过参数将数据传递到函数中
  • 参数是以逗号分隔的表达式列表
  • 参数按照从左到右的顺序求值

参数类型

序号 类型 描述
1 值参数 默认传参方式
2 引用参数 改变原始调用参数值
3 默认参数 调用时允许省略的参数
4 剩余参数 调用参数数量不确定
  1. <?php
  2. // 函数参数
  3. // 1. 值参数
  4. // 2. 引用参数
  5. // 3. 默认参数
  6. // 4. 剩余参数
  7. // 1. 值参数, 默认
  8. function example1(float $sum):float{
  9. return $sum += 1;
  10. }
  11. $var = 9;
  12. echo '$sum = '.example1($var);
  13. echo '<br>';
  14. // 在函数中改变了调用参数的值,但原始调用参数并没有发生变化
  15. echo '$var = '.$var;
  16. echo '<hr>';
  17. // 2. 引用参数
  18. // 如果在参数前面使用了取地址符:&
  19. function example2(float &$sum):float{
  20. return $sum += 1;
  21. }
  22. $var = 10;
  23. echo '$sum = '.example2($var);
  24. echo '<br>';
  25. // 则会改变原始调用参数的值
  26. echo '$var = '.$var;
  27. echo '<hr>';
  28. // 3. 默认参数
  29. function cal(int $a,int $b,string $opt='+'){
  30. $res = 0;
  31. switch ($opt)
  32. {
  33. case '+':
  34. $res = "$a + $b = ".($a+$b);
  35. break;
  36. case '-':
  37. $res = "$a - $b = ".($a-$b);
  38. break;
  39. case '*' :
  40. $res= "$a * $b = ".($a*$b);
  41. break;
  42. case '/':
  43. $res = "$a / $b = ".($a/$b);
  44. break;
  45. default:
  46. $res = '非法操作符!!!';
  47. }
  48. return $res;
  49. }
  50. echo cal(50,20);
  51. echo '<br>';
  52. echo cal(50,20,'-');
  53. echo '<br>';
  54. echo cal(50,20,'*');
  55. echo '<br>';
  56. echo cal(50,20,'/');
  57. echo '<br>';
  58. echo cal(50,20,'$');
  59. echo '<hr>';
  60. // 4. 剩余参数
  61. // (1) 用在函数的形式参数列表中,表示"收集",将多个离散的参数打包到一个数组中处理
  62. function sums(...$arrs):float
  63. {
  64. return array_sum($arrs);
  65. // return array_product($arrs);
  66. }
  67. $arr=[1,2,3,4,5,6,7,8,9];
  68. // (2) 用在函数的调用参数列表中,表示"展开",还原将一个数组展开成一个个离散的值
  69. echo sums(...$arr);

运行结果

总结:
php的函数是一个重要的基础知识,和变量一样是个重要的概念,我通过再看一遍老师的课堂笔记和视频讲课,自己再输入代码一遍,才有点印象,不容易啊。继续加油!

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