博客列表 >PHP函数的使用

PHP函数的使用

XFY_肆意De...
XFY_肆意De...原创
2020年07月13日 14:51:53620浏览
函数的申明与调用;
  1. 使用function 申明:
  2. 例如:function 函数名称(参数){
  3. 具体执行的函数体;
  4. }
函数命名方法:
  1. 小写字母/数字或下线且不允许使用数字开头,并且命名的时候最好是有一定意义。
  1. function get_user_name(int $user_id){}
  2. function get_password(int $user_id){}
  3. function error_msg(string $str){}
自定义函数的申明与调用;
  1. //函数声明:求两个参数的和
  2. function sum(float $x,float $y) :float{
  3. return $x + $y;
  4. }
  5. //调用
  6. echo sum(10,10);
  7. //输出:20
函数类型
  1. 系统函数:
  2. 系统给我们提供了若干函数
  3. // 1、所有的字符都转小写(针对英文字母)
  4. echo strtolower('ABCDEFG');
  5. // 2、字符串分割数组,语法:str_split(字符串,数组元素的长度)
  6. print_r(str_split("aaabbbccc",3));
  7. // 3、四舍五入
  8. echo round(3.5);
可变函数
  1. //函数声明:求两个参数的和
  2. function sum(float $x,float $y) :float{
  3. return $x + $y;
  4. }
  5. // 1、定义值为函数名称的变量
  6. $sum2='sum';
  7. // 2、使用可变变量输出函数
  8. echo $sum2(10,10);
  9. echo '<br>';
  10. // 使用函数输出结果相同
  11. echo sum(10,10);
匿名函数(也叫具名函数/闭包)
  1. //将一个没有函数名的函数赋值给一个变量
  2. $sum = function(float $x,float $y) :float{
  3. return $x + $y;
  4. };
  5. echo $sum(10,10);
  6. 闭包可以从父作用域中继承变量
  7. $msg = 'hello';
  8. // 使用use()继承$msg变量
  9. $msg_str = function () use ($msg) {
  10. return $msg;
  11. };
  12. echo $msg_str();
函数的返回值

函数必须要有返回值,正常情况下只能返回单一的值(如不能同时输出两个变量),可以通过以下方式返回不同类型的值:

通过字符串拼装
  1. function demo(): string
  2. {
  3. $status = 1;
  4. $msg= '成功';
  5. return $status . $msg;
  6. }
  7. echo demo();
  8. //输出:1成功
  9. //通过数组返回
  10. function demo(): array
  11. {
  12. $user_id =1;
  13. $user_name='张三';
  14. return ['id' => $user_id, 'name' => $user_name];
  15. }
  16. print_r(demo());
  17. // 输出:
  18. // Array
  19. // (
  20. // [id] => 1
  21. // [name] => 张三
  22. // )
  23. //通过json返回字符串
  24. function demo(): string
  25. {
  26. $user_id =1;
  27. $user_name='张三';
  28. return json_encode(['id' => $user_id, 'name' => $user_name]);
  29. }
  30. echo demo();
  31. // 输出:{"id":1,"name":"\u5f20\u4e09"}
  32. //也可以使用json_decode()转回数组;(不加第二个参数默认转换为对象)
  33. print_r(json_decode( demo(), true));
  34. //通过序列化方式返回字符串
  35. function demo(): string
  36. {
  37. $user_id =1;
  38. $user_name='张三';
  39. return serialize(['id' => $user_id, 'name' => $user_name]);
  40. }
  41. echo demo();
  42. // 输出:a:2:{s:2:"id";i:1;s:4:"name";s:6:"张三";}
  43. //a表示数组,2个元素,
  44. //第1个元素键名为id为string类型,长度是2,值为int类型,长度是1
  45. //第2个元素键名为name为string类型,长度是4,值为string类型,长度是6
  46. // 反序列化: 还原
  47. print_r(unserialize( demo()));
函数中的参数
  1. 普通参数
  1. //函数声明:求两个参数的和
  2. function sum(float $x,float $y) :float{
  3. return $x + $y;
  4. }
  5. //调用
  6. echo sum(10,10);
  7. //输出:20
  8. //指定了两个float类型参数x,y,未指定默认值
  9. //默认值参数
  10. //函数声明:求两个参数的和
  11. function sum(float $x,float $y=10) :float{
  12. return $x + $y;
  13. }
  14. //调用
  15. echo sum(5);
  16. //输出:15
  17. //指定了两个float类型参数x,y,其中y指定了默认值10;
  18. //凡是有默认值的参数,必须写到没有默认值参数的后面
  19. //注意 引用参数,要在参数前添加取地址符&
  20. function sum(float &$y) :float{
  21. return $y*=2;
  22. }
  23. $p=5;
  24. //在函数参数中引用变量$p
  25. echo sum($p);
  26. //函数内部对参数的更新会实时映射到外部实际参数$p
  27. echo $p;
  28. //简单理解就是同步更新引用变量
  29. //剩余参数
  30. // 例如:一个数量不固定的数求和,参数前面加...
  31. function demo(...$num)
  32. {
  33. //array_sum为数组求和函数
  34. return array_sum($num);
  35. }
  36. // 定义数组
  37. $arr = [2,2,2,2,2];
  38. // 无论数组有多少个,全部进行计算
  39. $num_sum = demo(...$arr);
  40. echo $num_sum;
函数的命名空间
  1. 函数在同一空间中,同样不允许有多个同名函数,就等同于一个文件夹里不允许有两个相同文件。(如一个文件夹里不能同时有两个11.txt)
  2. 解决命名冲突:使用命名空间
  1. // 函数的命名空间
  2. namespace ns1 {
  3. function demo(){
  4. return '我是ns1的DEMO';
  5. }
  6. }
  7. namespace ns2 {
  8. function demo(){
  9. return '我是ns2的DEMO';
  10. }
  11. }
  12. // 全局空间: 匿名空间,默认空间
  13. namespace {
  14. function demo(){}
  15. echo ns1\demo();
  16. }

总结:

  1. 函数的使用前期自学基本使用没有问题,通过学习,有了更系统的理解;
  2. 对于回调函数,异步编程中的函数的参数还不能完全理解。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议