博客列表 >php函数的声明以及使用

php函数的声明以及使用

零龙
零龙原创
2020年07月08日 22:08:171005浏览

php函数的声明以及使用

1. 函数的申明

  • 函数名是标识符之一,只能有字母数字下划线,开头不能是数字;
  • 函数名的命名,必须符合“小驼峰法则”FUNC(),func(),Func();
  • 函数名不区分大小写;
  • 函数名不能与已有函数同名,不能与内置函数名同名;
  • function_exists(“func”);用于检测函数是否已经声明;
  • 注意传入的函数名,必须是字符串格式,返回结果为true/false;
    echo打印时,true为1,false不显示;

    php中变量的作用域

  1. 局部变量:声明在函数内部的变量,称为局部变量,只在函数内部使用,函数外如需使用,需在函数中使用return关键字返回;
  2. 全局变量:声明在函数外部的变量,称为全局变量;
  3. 代码复用的重要手段
  4. 数据复用的重要手段
    1. function Fun(参数、参数、参数.....)
    2. {
    3. 函数体可执行的代码;
    4. }
    无参函数示例:
  1. function Fun()
  2. {
  3. echo "欢迎您来到php函数的世界!";
  4. }
  • 示例中定义了Fun()函数、在函数体内输出了字符串。
    有参函数示例:
  1. function kd(float $zl,int $mdd):float
  2. {
  3. $zl = ceil($zl);
  4. switch($mdd)
  5. {
  6. case 1:
  7. $qb = 10;
  8. $xz = 5;
  9. break;
  10. case 2;
  11. $qb = 10;
  12. $xz = 8;
  13. break;
  14. case 3;
  15. $qb = 15;
  16. $xz = 10;
  17. break;
  18. }
  19. $yf = $qb + $xz*($zl-1);
  20. return $yf;
  21. }
  22. echo kd(7.2,2);
  • 在示例中使用函数和switch得到快件收费标准,在调用时传了两个参数到函数,一个重量,一个目的的。获取快件运输费用。

2. 函数的调用

  1. <?php
  2. function Fun()
  3. {
  4. echo "欢迎您来到php函数的世界!";
  5. }
  6. echo "echo调用:";
  7. echo fun();
  8. echo "<br>";
  9. $hello=Fun();
  10. echo $hello;
  • 示例图

    3. 函数的类型

  • 自定义函数。
  • 系统函数。
  • 可变函数。
  • 匿名函数。
  • 父级函数。

示例

  1. //可变函数
  2. //对自定义函数的函数名赋值后调用。
  3. echo "<b>可变函数</b>";
  4. echo "<br>";
  5. $f = 'yf';
  6. echo "您购买的活动实付金额是:¥".$f(6.5,1.3);
  7. echo "<hr>";
  8. echo "<b>匿名函数</b>";
  9. echo "<br>";
  10. $yh = 0.8; //使用use调用外面变量
  11. $func = function(float $zl,float $dj) use ($yh):float
  12. {
  13. $je = $zl * $dj;
  14. echo "您购买的金额是:¥".$je."<br>";
  15. if($zl>5)
  16. {
  17. $je = $je * $yh;
  18. }
  19. return $je;
  20. }; //以为是给变量赋值所有这里必须要打;
  21. echo "您购买的活动实付金额是:¥".$func(6.5,1.3);
  22. echo "<hr>";
  23. echo "<b>父作用域函数</b>";
  24. echo "<br>";
  25. $j = function ($yh)
  26. {
  27. $func = function(float $zl,float $dj) use ($yh):float
  28. {
  29. $je = $zl * $dj;
  30. echo "您购买的金额是:¥".$je."<br>";
  31. if($zl>5)
  32. {
  33. $je = $je * $yh;
  34. }
  35. return $je;
  36. };
  37. return $func;
  38. };
  39. echo "您购买的活动实付金额是:¥".$j(0.7)(6.5,2.1);

对函数的记住类型进行的编写,加深对函数的认识。
示例图

4. 函数的返回值

  • 函数必须要有返回值
  • 函数只能返回单一的值
  • 函数可拼装返回字符串返回
  • 函数可通过数组的方式返回
  • 函数可通过josn返回
  • 函数可通过序列化返回

1.函数必须有返回值:

  1. function a()
  2. {
  3. }
  4. echo a();
  • 一个空的函数也有返回值NULL

2.函数返回单一的值

  1. function a()
  2. {
  3. echo "函数返回值";
  4. }
  5. echo a();
  6. echo "<br>";
  7. function b(int $c):int
  8. {
  9. $c = $c/2;
  10. return $c;
  11. }
  12. echo b(100);
  • 未设参数的函数返回值是函数本身。
  • 通过return返回一个整数。可以通过字符串返回多个值。

3.函数字符串返回

  1. function c():string
  2. {
  3. $lx = "利息";
  4. $bj = "本金";
  5. $yh = "月还";
  6. return $bj.",".$lx.",".$yh;
  7. }
  8. echo c();
  • return 返回的值用.链接后变成一个字符串返回。

4.函数数组返回

  1. function d(float $dk,int $n,float $l):array
  2. {
  3. $nx = $dk * $l * $n;
  4. $xh = $dk + $nx;
  5. $yh = $xh / ($n * 12);
  6. return ["nx"=>$nx,"xh"=>$xh,"yh"=>$yh];
  7. }
  8. $myh=(d(400000,20,0.047)['yh']);
  9. $myh =number_format($myh,2);
  10. echo $myh;
  • 传入字符串参数,通过数组返回计算出来的值。

5.通过josn返回

  1. function e():string
  2. {
  3. $gj ="中国";
  4. $sf ="贵州省";
  5. $cs ="贵阳市";
  6. return json_encode(["gj"=>$gj,"sf"=>$sf,"cs"=>$cs]);
  7. }
  8. echo e();
  9. echo "<br>";
  10. $bb=json_decode(e());
  11. foreach($bb as $k => $value)
  12. {
  13. echo $k ."=>". $value;
  14. }
  • 将函数内的值用JSON返回,可通过foreach输处返回值

6.通过序列化返回

  1. function f()
  2. {
  3. $gj ="中国";
  4. $sf ="贵州省";
  5. $cs ="贵阳市";
  6. return serialize(["gj"=>$gj,"sf"=>$sf,"cs"=>$cs]);
  7. }
  8. echo f();
  9. echo "<br>";
  10. $dm = unserialize(f());
  11. foreach($dm as $key => $value)
  12. {
  13. echo $key."=>".$value;
  14. }
  • 通过serialize将返回数组,使用unserialize过滤,在使用foreach输出返回数据

函数返回示例图

5. 函数的参数

  • 值传参
  1. function a(int $b): int
  2. {
  3. $b= $b*2;
  4. return $b;
  5. }
  6. echo a(15);
  • 引用传参
  1. function c(float $d): float
  2. {
  3. $d = $d * 3;
  4. return $d;
  5. }
  6. $e = 12;
  7. echo c($e);
  • 默认参数
  1. //100内能整除4的数的和
  2. $d = 0;
  3. function js(int $a,int $b=4):int
  4. {
  5. for($i=1;$i<=$a;$i++)
  6. {
  7. if($i % $b == 0)
  8. {
  9. global $d;
  10. $d = $d + $i;
  11. }
  12. }
  13. return $d;
  14. }
  15. echo js(100);
  • 剩余参数
  1. function sy(...$sz)
  2. {
  3. return $sz;
  4. }
  5. $res =sy(1,2,3,4,5,6,7,8,9,10);
  6. $sy1 = [1,2,3,4,5,6,7,8,9,10];
  7. //print_r($res);
  8. echo "<br>";
  9. $res1 = sy(...$sy1);
  10. print_r($res1);
  • 两种方法对剩余参数进行调用,关键使用…来替换参数。

  • 没有传送的参数,必须写到传送参数的后面

6. 函数的命名空间

  • 同常数一样namespace,全局不能出现相同的函数名,需要必须使用命名空间来定义。

示例

  1. <?php
  2. namespace de {
  3. function demo1()
  4. {
  5. return __FUNCTION__;
  6. }
  7. }
  8. namespace de1{
  9. function demo1() {
  10. return __FUNCTION__;
  11. }
  12. }
  13. namespace{
  14. echo de\demo1();
  15. echo "<br>";
  16. echo de1\demo1();
  17. }

对两个命名空间的访问,

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