博客列表 >PHP函数基础

PHP函数基础

邱世家的博客
邱世家的博客原创
2020年07月08日 18:31:11805浏览

函数的声明与调用

  1. // 函数的声明与调用
  2. //函数基本语法:
  3. /*
  4. function 函数名(参数){
  5. 要执行得代码,可以一行可以多行可以为空;
  6. }
  7. */
  8. // function 声明一个函数
  9. function sum(int $a, int$b):int{
  10. // return: 将函数的执行结果返回到调用者
  11. return $a + $b;
  12. }
  13. // 此处返回3
  14. echo sum(1,2);

函数得类型:

  • 自定义函数:开发者自己定义函数名字 以及参数等
  1. function sum1(int $a, int$b):int{
  2. return $a * $b;
  3. }
  4. // 此处返回200
  5. echo sum1(10,20),'<hr>';
  • 系统函数:
    1. $str = "使用关键字可以模拟优化器执行SQL查询语句";
    2. // 字符串截取
    3. // 按照字节截取substr();,UTF-8:一个汉字三个字节
    4. //此处返回 :使用
    5. echo substr($str, 0, 6),'<br>';
    6. // 字符串截取mb_substr()此处返回:使用关键字可
    7. echo mb_substr($str, 0, 6),'<hr>';
  • 可变参数:
    1. // 可变参数:
    2. function add(int $a, int$b):int{
    3. return $a + $b;
    4. }
    5. // 声明变量值为函数名称
    6. $myadd = 'add';
    7. // 两者都输出30
    8. echo add(10,20),'<br>';
    9. echo $myadd(10,20),'<hr>';
  • 匿名函数:没有函数名的函数,也叫闭包函数
    1. // 语法:function (参数列表){....}; 要带着结束符
    2. $func = function (int $a, int$b):int{
    3. return $a + $b;
    4. };
    5. //输出100
    6. echo $func(99,1),'<br>';
    7. // use(外部作用域的变量)用闭包的方式访问外部作用域中的变量
    8. // 全局变量
    9. $p = 10;
    10. $func = function (int $a, int $b) use ($p):int{
    11. return $a + $b + $p;
    12. };
    13. //输出110
    14. echo $func(99,1),'<hr>

    函数返回值

  • 函数肯定有返回值,而且只能返回单一得值,但是可以通过多种方式返回多值
  1. function f(){
  2. }
  3. // 此处返回null
  4. var_dump (f());
  • 字符串拼接:用.
  1. function demo(){
  2. $name = '乔峰';
  3. $kung_fu = 18;
  4. return $name .','. $kung_fu;
  5. }
  6. // 输出 乔峰,18
  7. echo demo(),'<hr>';
  • 通过数组方式返回
    1. // 数组返回
    2. function demo2():array{
    3. $name = '乔峰';
    4. $kung_fu = 18;
    5. return ['name'=>$name,'kung_fu'=>$kung_fu];
    6. }
    7. // 输出 乔峰
    8. echo demo2()['name'],'<hr>';
  • json:是js对象字面量的字符串表示
    1. function demo3():string{
    2. $name = '乔峰';
    3. $kung_fu = 18;
    4. return json_encode(['name'=>$name,'kung_fu'=>$kung_fu]) ;
    5. }
    6. //此处返回{"name":"\u4e54\u5cf0","kung_fu":18}
    7. //"name""kung_fu" 对象的属性
    8. echo demo3(),'<hr>';
  • 序列化得方式返回
  1. // 此处返回:i:123; i代表一个整数,123代表整数的值
  2. echo serialize(123),'<br>';
  3. // 此处返回:s:3:"123"; s代表字符串,3代表字符串的长度,“123”字符串内容
  4. echo serialize('123'),'<br>';
  5. // 此处返回:b:1; b代表布尔值,1代表true 真
  6. echo serialize(true),'<br>';
  7. // 此处返回:a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}
  8. // a代表数组 3 代表里面有三个值 大括号中的i代表数值的类型是整数
  9. echo serialize([1,2,3]),'<hr>';
  10. function demo4():string{
  11. $name = '乔峰';
  12. $kung_fu = 18;
  13. return serialize(['name'=>$name,'kung_fu'=>$kung_fu]) ;
  14. }
  15. echo '序列化方式' , demo4(),'<hr>';

函数得参数

  1. // 默认参数
  2. function demo(int $a, int $b=1):int
  3. {
  4. return $a + $b;
  5. }
  6. echo demo(1);
  7. echo '<hr>';
  8. // 值参数
  9. function demo1(int $a):int
  10. {
  11. return $a *=2;
  12. }
  13. // 写$b = $a;单纯为了自己好理解 不知道写了对不对
  14. $b = $a;
  15. $b =10;
  16. echo demo1($b),'<br>';
  17. echo $b,'<hr>';
  18. // 引用传递
  19. function demo2(int &$a):int
  20. {
  21. return $a *=2;
  22. }
  23. // 写$b = $a;单纯为了自己好理解 不知道写了对不对
  24. $b = $a;
  25. $b =10;
  26. echo demo2($b),'<br>';
  27. echo $b;
  28. echo '<hr>';
  29. // 剩余参数
  30. // 当调用得参数 数量不确定时 用...
  31. function demo3(...$y)
  32. {
  33. return array_sum($y);
  34. }
  35. $res = demo3(1,2,3,4,5,6,7);
  36. print_r($res);

函数的匿名空间

  • 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误
  • 要注意的是,当前脚本文件的第一个命名空间前面不能有任何代码,命名空间使用关键字namespace,
  1. // 函数得命名空间
  2. namespace ns1{
  3. // ns1 里面的demo1
  4. function demo1(){
  5. return __FUNCTION__;
  6. }
  7. }
  8. //全局空间:匿名空间,默认空间
  9. namespace {
  10. //全局空间下面的demo1
  11. function demo1(){}
  12. echo \ns1\demo1();
  13. }

总结:这一堂课是听得最迷糊的一堂课,感觉完全没有理解。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议