博客列表 >php函数基本知识

php函数基本知识

Jason
Jason原创
2020年04月23日 23:36:42644浏览

php函数基本概念

任何编程语言,都绕不开函数,只要有编程就会有函数,函数的最终目的就是实现代码的复用,减轻代码沉余。下面通过几个案例,带大家认识一下函数的基本概念

函数声明方式

案例一

  1. function getPrice(float $arg) : float
  2. {
  3. echo 'hello the world','<br>';
  4. return $arg *= 2;
  5. }
  6. echo getPrich(2);

代码效果图:

  1. hello the world
  2. 4

这是一个基本的函数,用中文翻译整个,可以得出如下

  1. function 函数名(参数)
  2. {
  3. 功能块;
  4. }
  5. // 调用函数如下
  6. 函数名(参数);

通过这个案例,我们可以知道函数的基本结构,那么函数肯定不仅仅只有这些,有自定义的函数,也有系统的函数,等等,我们来讲解一下

函数类型

函数类型一共有四种,每种定义方式都不一样

序号 类型 语法 解释
1 自定义函数 function 函数名(){...} 用户自定义的函数
2 系统函数 mb_substr()... 系统自带的函数,不需要定义,直接使用
3 可变函数 $funcName = 函数名 函数名赋给变量,变量调用函数
4 匿名函数 $a = function (){...} 函数表达式

1.自定义函数

  1. //需要声明函数名称,
  2. function getPrice(float $money, float $discount) : float
  3. {
  4. return $money * $discount;
  5. }
  6. // 通过函数名来调用
  7. echo '实付金额' . getPrice(100,0.1);
  8. echo '<hr>';

代码效果图:

  1. 实付金额10

2.系统函数

  1. $str = '我是一个中国人';
  2. // 系统函数不要声明,直接把要处理的数据传进去即可
  3. echo mb_substr($str , 0 , 5);
  4. echo '<hr>';

代码效果图:

  1. 我是一个中

更多系统函数可到手册中查看

3.可变函数

  1. // 将上面定义的函数,赋给一个变量,用变量来调用
  2. $funcName = 'getPrice';
  3. // 用变量来调用
  4. echo '实付金额:' . $funcName( 400, 0.4);
  5. echo '<hr>';

代码效果图:

  1. 实付金额:160

4.匿名函数: 闭包

  1. $discount = 0.8;
  2. // 将使用的变量通过use传入函数
  3. $getAmount = function (float $money, int $num) use ($discount) :float
  4. {
  5. $amount = $money * $num;
  6. return $amount >= 2000 ? $amount * $discount : $amount;
  7. };
  8. echo '实付金额: ' . $getAmount(100, 10);
  9. echo '<hr>';

代码效果图:

  1. 实付金额:1000

通过几个案例我们可以知道,函数有四种类型,每种类型定义的方式不一样,作用也不一样,我们可以看到在function后面还紧跟着一个括号,这个括号里面就是我们要传入的参数,这个参数类型也有很多种。

函数参数类型

函数参数类型,也有四种,和函数类型碰巧数量一致,我们来通过来了解一下。

序号 类型 语法 解释
1 值参数 function demo1(float $arg) : float 把数值传入函数
2 引用函数 function demo2(float &$arg) : float 引用变量的地址
3 默认参数 function demo3(float $a, float $b, string $opt = '+') 不传入数据进入函数,函数默认的参数
4 剩余参数 function demo6(...$args) : float 当有多个值传入函数,函数的处理

1.值参数

  1. function demo1(float $arg) : float
  2. {
  3. return $arg *= 2;
  4. }
  5. $value = 100;
  6. echo demo1($value),'<br>';
  7. echo $value;
  8. echo '<hr>';

代码效果图:

  1. 200
  2. 100

值参数非常的简单,就是将变量的值,传入函数,理解起来非常简单,就是将变量的值,传进函数,函数进行处理,函数不会对原来的变量进行改变

2.引用参数

  1. function demo2(float &$arg) : float
  2. {
  3. return $arg *= 2;
  4. }
  5. $value = 100;
  6. echo demo2($value). '<br>';
  7. echo $value;
  8. echo '<hr>';

代码效果图:

  1. 200
  2. 200

引用函数的地址,交给函数,此时我们可以发现,原来的值也发生了改变,这是为什么呢?这是因为我们引用了函数的地址,对变量的指向的数值进行了更新。

3.默认参数

默认参数,就是,我们不传入参数,函数使用的默认的参数

  1. function demo3(float $a, float $b, string $opt = '+')
  2. {
  3. $res = 0;
  4. switch($opt) {
  5. case '+':
  6. $res = "$a + $b =" . ($a + $b);
  7. break;
  8. case '-':
  9. $res = "$a - $b" . ($a - $b);
  10. break;
  11. case '*':
  12. $res = "$a * $b=" . ($a * $b);
  13. break;
  14. case '/':
  15. $res = "$a / $b" . ($a / $b);
  16. break;
  17. default:
  18. $res = '非法操作符';
  19. }
  20. return $res;
  21. }
  22. echo demo3(10,20),'<br>';
  23. echo demo3(10,20,'*');
  24. echo demo3(10,30,'^');
  25. echo '<hr>';

代码效果图:

  1. 30
  2. 200
  3. 非法操作符

4.剩余参数

所谓的剩余参数,就是当我们输入多个参数时,函数并没有声明,函数会如何处理。

  1. // 函数声明变量时,用数组声明,前面用...表示多个
  2. function demo6(...$args) : float
  3. {
  4. // 用数组求和函数,也就是系统自定义的函数,进行处理
  5. return array_sum($args);
  6. }
  7. // print_r(demo6(3,4,7,8,89,23));
  8. echo demo6(1,2,3,4,5,6,7,8,9),'<br>';
  9. $arr = [1,2,3,4,5,6,7,8,9,10];
  10. print_r(demo6(...$arr));

代码效果图:

  1. 45
  2. 55

通过剩余参数,我们可以知道,当函数有很多变量时,可以通过数组来接收,不需要定义很多参数来,非常的智能,解决了不规则参数的处理。既然有参数,那就有返回值,返回值也有很多类型

函数的返回值

函数的返回值要遵循单值返回的原则。

序号 场景 描述
1 return 可以返回任何类型的值
2 return 默认返回null
  • 如果需要返回多个值,可以通过以下方式
序号 方式 描述
1 string 字符串拼接
2 array 数组
3 json JSON 字符串
4 serialize 序列化字符串

1.string拼接

  1. function demo1() : string
  2. {
  3. $status = 1;
  4. $message = '成功';
  5. // return只能返回单值
  6. // return $status , $message;
  7. return $status . ':' . $message;
  8. };

代码效果图:

  1. 1成功

通过.拼接,输出不同的变量,达到多值返回的目的。

2.数组

  1. function demo2() : array
  2. {
  3. return ['status'=>1, 'message'=>'成功'];
  4. }
  5. $res = print_r(demo2(), true);
  6. printf('<pre>%s</pre>', $res);
  7. echo '<hr>';

代码效果图:

  1. 1成功

3.JSON返回

  1. //json:是用对象字面量的方式来表示数据,是一种轻量级通用的数据交换或传输方式
  2. //json本质上就是一个具有一定结构和格式的字符串,不过这种格式得到了公认
  3. function demo3() : string
  4. {
  5. return json_encode(['status'=>1, 'message' => '成功']);
  6. }
  7. echo demo3();
  8. $data = demo3();
  9. $var = json_encode($data, true);
  10. print_r($var);
  11. echo '<hr>';

代码效果图:

  1. {"status":1,"message":"\u6210\u529f"}"{\"status\":1,\"message\":\"\\u6210\\u529f\"}"

4.通过序列化返回多个值

  1. function demo4() : string
  2. {
  3. return serialize(['status' =>1,'message'=>'成功']);
  4. }
  5. echo demo4();
  6. echo '<hr>';

代码效果图:

  1. a:2:{s:6:"status";i:1;s:7:"message";s:6:"成功";}

总结

到这里函数的类型,参数类型,返回值类型都已经讲解完了,这只是一些基本知识,要想更深的理解,还需要更多的使用和运用。

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