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

PHP函数:类型,返回值,参数

老陈
老陈原创
2020年04月23日 11:09:40578浏览

函数类型

1.自定义函数
  1. //通过function关键字自定义了一个houMuch()函数
  2. function houMuch( int $money ,int $pay):int
  3. {
  4. return $money - $pay ;
  5. }
  6. echo houMuch(80,20);
2.系统函数
  1. $sty='php中文网原创视频。';
  2. //利用系统函数获取字符串截取,获取字符串前五个字符
  3. //mb_substr( 要截取的字符串,起始位置,截取长度);
  4. echo mb_substr( $sty,0,5);
3.可变函数
  1. function houMuch( int $money ,int $pay):int
  2. {
  3. return $money - $pay ;
  4. }
  5. //把函数名称 放在一个变量里,调用变量名。
  6. $str = 'houMuch';
  7. echo $str( 100 ,20);
4.匿名函数
  1. $zhekou = 0.9;
  2. //通过use关键字来访问函数外部的全局作用域
  3. $houMuch= function ( int $money ,int $pay) use ($zhekou):int
  4. {
  5. return $money - ($pay>=500?$pay * $zhekou : $pay) ;
  6. };
  7. echo '剩余金额:'. $houMuch(2000,300) ;
  8. //如果父作用域也是一个函数
  9. $houMuch = function($zhekou=0.9)
  10. {
  11. //子作用域可继承父作用域的变量
  12. return function ( int $money ,int $pay) use ($zhekou):int
  13. {
  14. return $money - ($pay>=500?$pay * $zhekou : $pay) ;
  15. };
  16. };
  17. echo '剩余金额:'. $houMuch(0.5)(2000,500) ;

返回值

1.字符串拼装
  1. // 适合处理大量的php+html混写
  2. // 这种返回的格式是用户自定义的,前端处理非常麻烦
  3. function user():string
  4. {
  5. $name= '毛毛';
  6. $age = 19;
  7. return $name .':'. $age.'岁' ;
  8. }
  9. echo user();
2. 通过数组返回
  1. function demo1 (): array
  2. {
  3. return ['name'=>'毛毛','age'=>20] ;
  4. }
  5. //通过printf()格式化打印数据
  6. //%s占位符
  7. printf('<pre>%s</pre>',print_r(demo1(),true));
3.JSON字符串

通过JSON返回:
json:是用js对象字面量 的方式来表示数据,是一种轻量级通用的数据交换或传输格式
json本质上就是一个具有一定结构和格式的字符串,不过这种格式得到了公认,几乎所有编程语言都支持它的借口

  1. function demo2 (): string
  2. {
  3. // json_encode()将php数据编码为json格式的字符串返回
  4. return json_encode(['name'=>'毛毛','age'=>20]) ;
  5. }
  6. //将json格式的字符串还原为php对象/数组
  7. //json_decode(); 默认返回一个Object对象类型,第二个参数为true时, 返回一个数组类型
  8. print_r(json_decode(demo2()));
  9. echo '<br>';
  10. print_r(json_decode(demo2(),true));
4.序列化:字符串
  1. function demo3 (): string
  2. {
  3. //通过serialize()序列化数组
  4. return serialize(['name'=>'毛毛','age'=>20]) ;
  5. }
  6. echo demo3();
  7. // 通过unserialize();反序列化才可以使用
  8. // echo unserialize(demo3());
  9. // echo print_r(unserialize(demo3()),true);
  10. printf('<pre>%s</pre>',print_r(unserialize(demo3()),true));

函数参数

1.值参数,默认
  1. function demo1(float $a)
  2. {
  3. return $a *= 2;
  4. }
  5. $value = 100;
  6. echo demo1($value).'<br>';
  7. //在函数中改变了调用参数的值,但原始调用参数并没有发生变化
  8. echo $value;
2. 引用传递
  1. //如果在参数前面使用了取地址符“&”,则会改变原始调用参数的值
  2. function demo2(float &$a)
  3. {
  4. return $a *= 2;
  5. }
  6. echo demo2($value).'<br>';
  7. echo $value;
3.默认参数
  1. //默认参数必须写在必选参数的后面
  2. function demo3(float $a ,float $b , string $opt = '+')
  3. {
  4. $c = 0 ;
  5. switch ( $opt) {
  6. case '+':
  7. $c = "$a + $b =".($a + $b) ;
  8. break;
  9. case '-':
  10. $c = "$a - $b =".($a - $b) ;
  11. break;
  12. case '*':
  13. $c = "$a * $b =".($a * $b) ;
  14. break;
  15. case '/':
  16. $c = "$a / $b =".($a / $b) ;
  17. break;
  18. default:
  19. $c = '非法操作符';
  20. }
  21. return $c;
  22. }
  23. echo demo3(10,20).'<br>';
  24. echo demo3(10,20,'/').'<br>';
  25. echo demo3(10,20,'#').'<br>';
4.剩余参数
  1. function demo4(float $a ,float $b , float $c):float
  2. {
  3. return $a+ $b+ $c;
  4. }
  5. echo demo4(1,2,3).'<br>';
  6. function demo5()
  7. {
  8. //参数数量
  9. // return func_num_args();
  10. // 根据索引返回指定的调用函数
  11. //return func_get_arg(2);
  12. //返回一个数组
  13. //return func_get_args();
  14. $c = 0;
  15. for ($i=0; $i <func_num_args(); $i++) {
  16. $c += func_get_arg($i);
  17. }
  18. return $c;
  19. }
  20. function demo6()
  21. {
  22. $c = 0;
  23. foreach (func_get_args() as $value) {
  24. $c += $value;
  25. }
  26. return $c;
  27. }
  28. // echo demo5(1,2 ,3,4,8,7,9);
  29. // print_r(demo5(1,2,3,4,5));
  30. echo demo5(2,2,10).'<br>';
  31. echo demo6(2,2,10,10).'<br>';
  32. echo '<hr>';
  33. //使用剩余参数简化
  34. // “ ... ”参数归纳符
  35. function demo7(...$str):float
  36. {
  37. // array_sum(): 参数相加, array_product() :参数相乘
  38. return array_sum($str);
  39. // return array_product($str);
  40. }
  41. echo demo7(2,2,10,10).'<br>';
  42. $arr = [10,20,30,40,50,60];
  43. print_r(demo7(...$arr));
  44. /*“ ... ”
  45. 1.用在函数形式参数列表中,表示收集,将多个离散的参数打包到一个数组中处理
  46. 2.用在函数的调用参数列表中,表示展开,还原将一个数组展开成一个个离散的
  47. */

课程总结:

1、函数的4种类型是:自定义函数、系统函数、可变函数、匿名函数;
2、函数的4种不同的多值返回值类型:字符串、数据、JSON、序列化字符串;
3、函数的4种参数类型:值参数、引用参数、默认参数、剩余参数。

以上所学知识还是相对容易理解,还需要多练习加强巩固所学知识点。

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