博客列表 >php函数

php函数

Mryang的博客
Mryang的博客原创
2020年04月26日 11:03:11807浏览

函数

[toc]

1. 语法

函数是实现代码复用的重要方式,在所有编程语言中均如此

  1. function 函数名称(类型: 参数列表): 返回值类型
  2. {
  3. // 函数体
  4. return 返回值;
  5. }
序号 名称 描述
1 function 声明函数
2 函数名称 符合 PHP 标识符命名规范,不区分大小写
2 参数列表 零个或多个接收外部传入到函数的变量
2 {... 创建出一个封闭的函数作用域
2 函数体 由零个可多个合法的 PHP 语句组成
2 return 值 将执行结果返回函数调用者[可选]
2 ...} 函数执行结束,如果没有return,则返回null

2. 类型

序号 类型 语法 描述
1 自定义函数 function getName(){...} 用户根据业务需求创建
2 系统函数 substr(), count()... 也叫预定义函数,不必声明直接调用
3 可变函数 $funcName(); 函数名使用变量表示
4 匿名函数 $f = function (){...} 也叫”闭包”或”函数表达式”,常用做回调处理
  1. <?php
  2. //1、自定义函数
  3. function add(int $a,int $b) : int
  4. {
  5. return $a+$b;
  6. }
  7. //2、系统函数
  8. //3、可变函数
  9. function multiply(int $a,int $b) : int
  10. {
  11. return $a*$b;
  12. }
  13. $func_name = 'add';
  14. echo $func_name(3,2).PHP_EOL;
  15. $func_name = 'multiply';
  16. echo $func_name(3,2).PHP_EOL;
  17. //4、匿名函数(也叫闭包, 可以访问父作用域的变量)
  18. $num = 100;
  19. $getNum = function() use($num) : int
  20. {
  21. return $num;
  22. };
  23. echo $getNum().PHP_EOL;
  24. $f = function($a){
  25. return function($x,$y) use($a){
  26. return $x*$y*$a;
  27. };
  28. };
  29. echo $f(10)(20,30);

3. 返回值

  • 函数必须要有返回值
  • 函数必须是遵守单值返回原则
序号 场景 描述
1 return 可以返回任何类型的值,包括函数类型
2 return 遇到}也会返回, 默认返回null
  • 如果需要返回多个值,可以通过以下手段
序号 返回值类型 描述
1 string 字符串拼接
2 array 数组
3 json JSON 字符串
4 serialize 序列化字符串

json 和序列化,使用时需要进行解码操作


4. 参数

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

参数类型

序号 类型 描述
1 值参数 默认传参方式
2 引用参数 改变原始调用参数值
3 默认参数 调用时允许省略的参数
4 剩余参数 调用参数数量不确定
  1. <?php
  2. function sum() :int
  3. {
  4. $sum = 0;
  5. if(func_num_args()>0){
  6. foreach(func_get_args() as $v){
  7. $sum += $v;
  8. }
  9. }
  10. return $sum;
  11. }
  12. // echo sum(1,2,3,4,5);
  13. function sum2(...$args) :int
  14. {
  15. return array_sum($args);
  16. }
  17. $arr = [1,2,3,4,5,6];
  18. // echo sum2(...$arr);
  19. $arr = ['aba',22,'man'];
  20. list($name,$age,$sex) = $arr;
  21. // echo "姓名:$name,年龄:$age,性别:$sex".PHP_EOL;
  22. list($name1,,$sex1) = $arr;
  23. // echo "姓名:$name1,性别:$sex1";
  24. $user[] = [100, 'admin', 90];
  25. $user[] = [110, 'peter', 60];
  26. $user[] = [120, 'jack', 98];
  27. // 数组解包
  28. // js中解构赋值, php中也有解构
  29. foreach ($user as list($id, $name)) {
  30. printf('id=%s, name=%s ', $id, $name);
  31. }

5. 回调函数

语法 类型 执行方式 应用场景
匿名函数 闭包Closure 异步 函数参数

异步执行,是指当前函数的执行并不会中断当前程序的执行流程

  1. ```
  2. ---
  3. ## 6. 命名空间
  4. - 使用目录来整理文档, 允许将同名文档,存储在不同的目录下面即可
  5. - 不同目录下的同名文件,访问时必须带上的它的目录名称,以未区别
  6. - 命名空间采用类似的思想,同名函数,只要声明在不同空间中即可
  7. - 同样, 访问这些函数时, 也需要带上它的命名空间才可以
  8. ```php
  9. <?php
  10. // 函数的命名空间
  11. // 命名空间是防止全局员成的命名冲突的
  12. // 全局成员: 函数, 常量, 类, 接口
  13. namespace ns1
  14. {
  15. function demo1() : string
  16. {
  17. return __FUNCTION__;
  18. }
  19. }
  20. namespace ns2
  21. {
  22. function demo1() : string
  23. {
  24. return __FUNCTION__;
  25. }
  26. }
  27. // 全局空间
  28. namespace
  29. {
  30. echo \ns1\demo1();
  31. echo '<hr>';
  32. echo \ns2\demo1();
  33. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议