Blogger Information
Blog 11
fans 0
comment 0
visits 7516
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP函数:类型,返回值,参数
老陈
Original
576 people have browsed it

函数类型

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种参数类型:值参数、引用参数、默认参数、剩余参数。

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

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