博客列表 >php基础函数的语法、函数的类型、函数返回值、函数参数

php基础函数的语法、函数的类型、函数返回值、函数参数

῀℡῀ᵒᵐᵍᵎᵎᵎ
῀℡῀ᵒᵐᵍᵎᵎᵎ原创
2020年04月21日 16:17:52962浏览

函数


1.函数语法

  • 函数是实现代码复用的重要方式,在所有编程语言中均如此
  1. function 函数名称(类型: 参数列表): 返回值类型
  2. {
  3. // 函数体
  4. return 返回值;
  5. }
序号 名称 描述
1 function 声明函数
2 函数名称 符合 PHP 标识符命名规范,不区分大小写
2 参数列表 零个或多个接收外部传入到函数的变量
2 {... 创建出一个封闭的函数作用域
2 函数体 由零个可多个合法的 PHP 语句组成
2 return 值 将执行结果返回函数调用者[可选]
2 ...} 函数执行结束,如果没有return,则返回null
  1. <?php
  2. // 函数语法
  3. //函数的声明
  4. function test( $c , $a = 10 , $b = 20){
  5. echo $a + $b + $c;
  6. }
  7. test( 30 );

2. 类型

序号 类型 语法 描述
1 自定义函数 function getName(){...} 用户根据业务需求创建
2 系统函数 substr(), count()... 也叫预定义函数,不必声明直接调用
3 可变函数 $funcName(); 函数名使用变量表示
4 匿名函数 $f = function (){...} 也叫”闭包”或”函数表达式”,常用做回调处理
  1. <?php
  2. // 函数
  3. // 1. 自定义函数
  4. // 2. 系统函数
  5. // 3. 可变函数
  6. // 4. 匿名函数:
  7. // testone: 小驼峰命名法
  8. // get_price: 蛇形命名法
  9. // 命名函数
  10. function testOne(){
  11. echo 'hello';
  12. }
  13. $a = 'testOne'; // 调用 testOne()函数
  14. $a();
  15. echo '<hr>';
  16. // 2. 系统函数
  17. // function mb_substr(){
  18. // //....
  19. // }
  20. $str = 'PHP中文网';
  21. // 仅获取前5个字符
  22. echo mb_substr($str, 0, 3);
  23. echo '<hr>';
  24. // 3. 可变函数
  25. function test1(){
  26. echo "可变函数<br />";
  27. }
  28. $f1 = "test1";
  29. $f1();
  30. echo '<hr>';
  31. // 4. 匿名函数:
  32. $names = function($name)
  33. {
  34. printf("这里是%s\r\n", $name);
  35. };
  36. $names('匿名函数');

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 test1(){
  11. $i='I';
  12. $love=' Love';
  13. $you=' You';
  14. //连接一下三个字符串
  15. echo $i.$love.$you;
  16. }
  17. echo test1();
  18. echo '<hr>';
  19. // 2. 通过数组
  20. function theMan() : array
  21. {
  22. return ['age'=>22, 'height'=>170, 'weight'=>60];
  23. }
  24. echo '年龄'.theMan()['age'].'岁,身高为'.theMan()['height'].'cm,体重为'.theMan()['weight'].'kg';
  25. echo '<hr>';
  26. // 3. 通过JSON返回
  27. function theWoMan() : string
  28. {
  29. // json_encode(): 将php数据编码为json格式的字符串返回
  30. return json_encode(['age'=>30, 'height'=>150, 'weight'=>65]);
  31. }
  32. // 将json格式的字符串还原/解析为php对象/数组
  33. $arr = json_decode(theWoMan(), true);
  34. print_r($arr);
  35. echo '<hr>';
  36. // 4. 通过序列化返回多个值
  37. // 其实json也是一种序列化
  38. function girl() : string
  39. {
  40. return serialize(['age'=>15, 'height'=>140, 'weight'=>40]);
  41. }
  42. echo girl();
  43. // 反序列化才可以使用
  44. $arr =unserialize(girl());
  45. printf('<pre>%s</pre>', print_r($arr,true));

4. 参数

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

参数类型

序号 类型 描述
1 值参数 默认传参方式
2 引用参数 改变原始调用参数值
3 默认参数 调用时允许省略的参数
4 剩余参数 调用参数数量不确定
  1. <?php
  2. // 函数参数
  3. // 1. 值参数
  4. // 2. 引用参数
  5. // 3. 默认参数
  6. // 4. 剩余参数
  7. // 1. 值参数, 默认
  8. function testOne(string $add) : string
  9. {
  10. return $add='你走错厕所了';
  11. }
  12. $there = '这里是女厕所';
  13. echo testOne($there) , '<br>';
  14. // 在函数中改变了调用参数的值,但原始调用参数并没有发生变化
  15. echo $there;
  16. echo '<hr>';
  17. // 2. 引用传递
  18. function testTwo(string &$add) : string
  19. {
  20. return $add='这里是女厕所';
  21. }
  22. $there = '你走错厕所了';
  23. echo testTwo($there) , '<br>';
  24. // 如果在参数前面使用了取地址符,则会改变原始调用参数的值
  25. echo $there;
  26. echo '<hr>';
  27. // 3. 默认参数
  28. // 默认参数必须写在必选参数的后面
  29. //自定义一个函数test3,用于打印一个人的属性
  30. function testThree($name="张三", $age=20, $sex="男"){
  31. echo "姓名:{$name}, 年龄:{$age}, 性别:{$sex} <br>";
  32. }
  33. testThree(); //全部使用默认参数
  34. testThree("李四"); //第一个默认参数被覆盖,后面两个参数为默认
  35. testThree("李四",18); //前两个默认参数被覆盖,后面一个参数为默认
  36. testThree("李四",18,"女"); //三个默认参数都被覆盖
  37. echo '<hr>';
  38. // 4. 剩余参数
  39. function testTset( )
  40. {
  41. $number = 0;
  42. foreach (func_get_args() as $value) {
  43. $number +=$value;
  44. }
  45. return $number;
  46. }
  47. print_r(testTset(1,2,3,4,5));
  48. echo '<hr>';
  49. // 使用剩余参数简化
  50. // ...: 参数归纳:
  51. function testForm(...$par){
  52. $sum=1;
  53. foreach ($par as $v)
  54. {
  55. $sum *=$v;
  56. }
  57. return $sum;
  58. }
  59. print_r(testForm(1,2,3,4,5));
  60. echo '<hr>';

课后总结:

部分不能理解,大多数还是可以理解的,可能以后到开发中应该能慢慢明白

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