Blogger Information
Blog 21
fans 0
comment 1
visits 19260
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP函数的使用
XFY_肆意De...
Original
628 people have browsed it
函数的申明与调用;
  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. 对于回调函数,异步编程中的函数的参数还不能完全理解。
Correcting teacher:GuanhuiGuanhui

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