Blogger Information
Blog 39
fans 0
comment 0
visits 30536
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP:函数的类型、返回值、参数
Original
496 people have browsed it

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

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