Blogger Information
Blog 36
fans 0
comment 0
visits 27913
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php函数类型、参数、返回值
小程_武汉_214945
Original
1011 people have browsed it

函数

1.函数的表示方式

  1. function 函数名称(类型: 参数列表): 返回值类型
  2. {
  3. // 函数体
  4. return 返回值;
  5. }

2. 函数的类型

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

代码示例

  1. <?php
  2. //自定义函数
  3. //BMI计算器
  4. function bmi($weight,$height):float
  5. {
  6. return $weight/($height**2);
  7. }
  8. //单位为kg/m
  9. echo '您的身体健康指数为'.bmi(60,1.75).'<br>';
  10. //系统函数
  11. $str='今天晚上讲的是php第四章';
  12. echo mb_substr($str,0,6).'<br>';//取出str字符串前6个字符,第一位从0开始
  13. $arr=['php','html','js','css'];
  14. echo '<pre>'.var_export(array_slice($arr,1,3),true).'<br>';//从数组第2位开始取3位
  15. //可变函数
  16. $a='bmi';
  17. echo $a(70,1.6).'<br>';//用可变函数调用BMI计算器
  18. //匿名函数
  19. //BMI计算器加上身高体重单位转换,假设转换单位为:斤=》公斤 cm=》m
  20. $arr1=[2,100];
  21. $result=function ($weight,$height)use($arr1){
  22. return ($weight/$arr1[0])/(($height/$arr1[1])**2);
  23. };
  24. echo $result(120,175),'<br>';
  25. //改写为父作用域为函数
  26. $bmi_pro=function (array $arr){
  27. return function ($weight,$height)use($arr){
  28. return ($weight/$arr[0])/(($height/$arr[1])**2);
  29. };
  30. }
  31. echo $bmi_Pro([2,100])(120,175);

3. 返回值

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

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

代码示例

  1. <?php
  2. //拼接字符串
  3. function body():string{
  4. $height=175;
  5. $weight=60;
  6. return '身高为'.$height.'cm,体重为'.$weight.'g<br>';
  7. };
  8. echo body();
  9. //转化为数组
  10. function body_1() : array{
  11. $arr=[
  12. 'height'=>175,
  13. 'weight'=>60];
  14. return $arr;
  15. };
  16. echo '身高为'.body_1()['height'].'cm,体重为'.body_1()['weight'].'g<br>';
  17. //json
  18. function body_2():string{
  19. return json_encode(['height'=>175,'weight'=>60]);
  20. }
  21. echo var_export(json_decode(body_2()),true).'<br>';
  22. //序列化
  23. function body_3():string{
  24. return serialize(['height'=>175,'weight'=>60]);
  25. }
  26. echo var_export(unserialize(body_3()),true);

4. 参数

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

参数类型

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

代码示例

  1. <?php
  2. //参数传递
  3. function add($number){
  4. return ++$number;
  5. }
  6. $number=1;
  7. echo add($number).'<br>';
  8. echo add($number).'<br>';
  9. //引用传递
  10. function add_1(&$number){
  11. return ++$number;
  12. }
  13. $number=1;
  14. echo add_1($number).'<br>';
  15. echo add_1($number).'<br>';//引用传递直接调用变量的地址
  16. //默认参数
  17. function name($name='张三'){
  18. return $name;
  19. }
  20. echo name().'<br>';
  21. echo name('李四').'<br>';
  22. //剩余参数
  23. function add_2()
  24. {
  25. $quantity=func_num_args();
  26. $total = 0;
  27. foreach (func_get_args() as $value) {
  28. $total +=$value;
  29. }
  30. return '输入参数'.$quantity.'个,和为'.$total;
  31. }
  32. echo (add_2(1,2,3,4,5)).'<br>';
  33. // 使用剩余参数简化
  34. function add_3(...$args){
  35. $add=0;
  36. $total=count($args);
  37. foreach($args as $result){
  38. $add+=$result;
  39. }
  40. return '输入参数'.$total.'个,和为'.$add;
  41. }
  42. echo add_3(1,2,3,4,5).'<br>';
  43. function add_4(...$arr){
  44. $add=array_sum($arr);
  45. $total=count($arr);
  46. return '输入参数'.$total.'个,和为'.$add;
  47. }
  48. echo add_4(...[1,2,3,4,5]);
  • 总结:今天课程中大部分内容比较容易掌握,剩余参数简化方法和匿名函数的use方法接触的较少,还需要多加练习。
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