搜索
博主信息
博文 63
粉丝 8
评论 8
访问量 63744
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP大牛成长之路:PHP函数的使用
周Sir-BLOG
原创
1057人浏览过

1、函数的声明与调用

1.1、函数的声明/语法:

  1. // 使用function声明
  2. // 函数语法:
  3. // function 函数名(参数列表) {
  4. // 函数体
  5. // }

1.2、函数命名方法:

  • 小写字母/数字或下划线且不允许用数字开头(多个单词使用‘_’来分开)
  1. function get_user_name(int $user_id){}
  2. function get_password(int $user_id){}
  3. function error_msg(string $str){}

1.3、函数简单示例(声明与调用):

  1. //函数声明:求两个参数的和
  2. function sum(float $x,float $y) :float{
  3. return $x + $y;
  4. }
  5. //调用
  6. echo sum(10,10);
  7. //输出:20

2、函数类型

2.1、自定义函数

  • 由用户定义函数名及参数
  1. //函数声明:求两个参数的和
  2. function sum(float $x,float $y) :float{
  3. return $x + $y;
  4. }
  5. //调用
  6. echo sum(10,10);

2.2、系统函数

  • 系统自带,无需定义直接使用;
  1. // 1、所有的字符都转小写(针对英文字母)
  2. echo strtolower('ABCDEFG');
  3. // 2、字符串分割数组,语法:str_split(字符串,数组元素的长度)
  4. print_r(str_split("aaabbbccc",3));
  5. // 3、四舍五入
  6. echo round(3.5);

2.3、可变函数

  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);

2.4、匿名函数(也叫具名函数/闭包)

  1. //将一个没有函数名的函数赋值给一个变量
  2. $sum = function(float $x,float $y) :float{
  3. return $x + $y;
  4. };
  5. echo $sum(10,10);
  • 闭包可以从父作用域中继承变量
  1. $msg = 'hello';
  2. // 使用use()继承$msg变量
  3. $msg_str = function () use ($msg) {
  4. return $msg;
  5. };
  6. echo $msg_str();

3、函数的返回值

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

3.1:通过字符串拼装

  1. function demo(): string
  2. {
  3. $status = 1;
  4. $msg= '成功';
  5. return $status . $msg;
  6. }
  7. echo demo();
  8. //输出:1成功

3.2:通过数组返回

  1. function demo(): array
  2. {
  3. $user_id =1;
  4. $user_name='张三';
  5. return ['id' => $user_id, 'name' => $user_name];
  6. }
  7. print_r(demo());
  8. // 输出:
  9. // Array
  10. // (
  11. // [id] => 1
  12. // [name] => 张三
  13. // )

3.3:通过json返回字符串

  1. function demo(): string
  2. {
  3. $user_id =1;
  4. $user_name='张三';
  5. return json_encode(['id' => $user_id, 'name' => $user_name]);
  6. }
  7. echo demo();
  8. // 输出:{"id":1,"name":"\u5f20\u4e09"}
  9. //也可以使用json_decode()转回数组;(不加第二个参数默认转换为对象)
  10. print_r(json_decode( demo(), true));

3.4:通过序列化方式返回字符串

  1. function demo(): string
  2. {
  3. $user_id =1;
  4. $user_name='张三';
  5. return serialize(['id' => $user_id, 'name' => $user_name]);
  6. }
  7. echo demo();
  8. // 输出:a:2:{s:2:"id";i:1;s:4:"name";s:6:"张三";}
  9. //a表示数组,2个元素,
  10. //第1个元素键名为id为string类型,长度是2,值为int类型,长度是1
  11. //第2个元素键名为name为string类型,长度是4,值为string类型,长度是6
  12. // 反序列化: 还原
  13. print_r(unserialize( demo()));

4、函数中的参数

4.1 普通参数

  1. //函数声明:求两个参数的和
  2. function sum(float $x,float $y) :float{
  3. return $x + $y;
  4. }
  5. //调用
  6. echo sum(10,10);
  7. //输出:20

指定了两个float类型参数x,y,未指定默认值

4.2 默认值参数

  1. //函数声明:求两个参数的和
  2. function sum(float $x,float $y=10) :float{
  3. return $x + $y;
  4. }
  5. //调用
  6. echo sum(5);
  7. //输出:15

指定了两个float类型参数x,y,其中y指定了默认值10;
凡是有默认值的参数,必须写到没有默认值参数的后面

4.3 引用参数,要在参数前添加取地址符&

  1. function sum(float &$y) :float{
  2. return $y*=2;
  3. }
  4. $p=5;
  5. //在函数参数中引用变量$p
  6. echo sum($p);
  7. //函数内部对参数的更新会实时映射到外部实际参数$p
  8. echo $p;
  9. //简单理解就是同步更新引用变量

4.4 剩余参数

  1. // 例如:一个数量不固定的数求和,参数前面加...
  2. function demo(...$num)
  3. {
  4. //array_sum为数组求和函数
  5. return array_sum($num);
  6. }
  7. // 定义数组
  8. $arr = [2,2,2,2,2];
  9. // 无论数组有多少个,全部进行计算
  10. $num_sum = demo(...$arr);
  11. echo $num_sum;

函数的命名空间

  • 函数在同一空间中,同样不允许有多个同名函数,就等同于一个文件夹里不允许有两个相同文件。(如一个文件夹里不能同时有两个11.txt)
  • 解决命名冲突:使用命名空间
  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. }

总结:

  • 函数的使用前期自学基本使用没有问题,通过学习,有了更系统的理解;
  • 对于回调函数,异步编程中的函数的参数还不能完全理解。
批改老师:GuanhuiGuanhui

批改状态:合格

老师批语:写的很好!命名规范一定要遵守。
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学