Blogger Information
Blog 36
fans 1
comment 0
visits 29754
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php函数基本知识
Jason
Original
643 people have browsed it

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:"成功";}

总结

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

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