php函数的声明以及使用
1. 函数的申明
- 函数名是标识符之一,只能有字母数字下划线,开头不能是数字;
- 函数名的命名,必须符合“小驼峰法则”FUNC(),func(),Func();
- 函数名不区分大小写;
- 函数名不能与已有函数同名,不能与内置函数名同名;
- function_exists(“func”);用于检测函数是否已经声明;
- 注意传入的函数名,必须是字符串格式,返回结果为true/false;
echo打印时,true为1,false不显示;php中变量的作用域
- 局部变量:声明在函数内部的变量,称为局部变量,只在函数内部使用,函数外如需使用,需在函数中使用return关键字返回;
- 全局变量:声明在函数外部的变量,称为全局变量;
- 代码复用的重要手段
- 数据复用的重要手段
无参函数示例:function Fun(参数、参数、参数.....)
{
函数体可执行的代码;
}
function Fun()
{
echo "欢迎您来到php函数的世界!";
}
- 示例中定义了Fun()函数、在函数体内输出了字符串。
有参函数示例:
function kd(float $zl,int $mdd):float
{
$zl = ceil($zl);
switch($mdd)
{
case 1:
$qb = 10;
$xz = 5;
break;
case 2;
$qb = 10;
$xz = 8;
break;
case 3;
$qb = 15;
$xz = 10;
break;
}
$yf = $qb + $xz*($zl-1);
return $yf;
}
echo kd(7.2,2);
- 在示例中使用函数和switch得到快件收费标准,在调用时传了两个参数到函数,一个重量,一个目的的。获取快件运输费用。
2. 函数的调用
<?php
function Fun()
{
echo "欢迎您来到php函数的世界!";
}
echo "echo调用:";
echo fun();
echo "<br>";
$hello=Fun();
echo $hello;
示例
//可变函数
//对自定义函数的函数名赋值后调用。
echo "<b>可变函数</b>";
echo "<br>";
$f = 'yf';
echo "您购买的活动实付金额是:¥".$f(6.5,1.3);
echo "<hr>";
echo "<b>匿名函数</b>";
echo "<br>";
$yh = 0.8; //使用use调用外面变量
$func = function(float $zl,float $dj) use ($yh):float
{
$je = $zl * $dj;
echo "您购买的金额是:¥".$je."<br>";
if($zl>5)
{
$je = $je * $yh;
}
return $je;
}; //以为是给变量赋值所有这里必须要打;
echo "您购买的活动实付金额是:¥".$func(6.5,1.3);
echo "<hr>";
echo "<b>父作用域函数</b>";
echo "<br>";
$j = function ($yh)
{
$func = function(float $zl,float $dj) use ($yh):float
{
$je = $zl * $dj;
echo "您购买的金额是:¥".$je."<br>";
if($zl>5)
{
$je = $je * $yh;
}
return $je;
};
return $func;
};
echo "您购买的活动实付金额是:¥".$j(0.7)(6.5,2.1);
对函数的记住类型进行的编写,加深对函数的认识。
示例图
4. 函数的返回值
- 函数必须要有返回值
- 函数只能返回单一的值
- 函数可拼装返回字符串返回
- 函数可通过数组的方式返回
- 函数可通过josn返回
- 函数可通过序列化返回
1.函数必须有返回值:
function a()
{
}
echo a();
- 一个空的函数也有返回值NULL
2.函数返回单一的值
function a()
{
echo "函数返回值";
}
echo a();
echo "<br>";
function b(int $c):int
{
$c = $c/2;
return $c;
}
echo b(100);
- 未设参数的函数返回值是函数本身。
- 通过return返回一个整数。可以通过字符串返回多个值。
3.函数字符串返回
function c():string
{
$lx = "利息";
$bj = "本金";
$yh = "月还";
return $bj.",".$lx.",".$yh;
}
echo c();
- return 返回的值用.链接后变成一个字符串返回。
4.函数数组返回
function d(float $dk,int $n,float $l):array
{
$nx = $dk * $l * $n;
$xh = $dk + $nx;
$yh = $xh / ($n * 12);
return ["nx"=>$nx,"xh"=>$xh,"yh"=>$yh];
}
$myh=(d(400000,20,0.047)['yh']);
$myh =number_format($myh,2);
echo $myh;
- 传入字符串参数,通过数组返回计算出来的值。
5.通过josn返回
function e():string
{
$gj ="中国";
$sf ="贵州省";
$cs ="贵阳市";
return json_encode(["gj"=>$gj,"sf"=>$sf,"cs"=>$cs]);
}
echo e();
echo "<br>";
$bb=json_decode(e());
foreach($bb as $k => $value)
{
echo $k ."=>". $value;
}
- 将函数内的值用JSON返回,可通过foreach输处返回值
6.通过序列化返回
function f()
{
$gj ="中国";
$sf ="贵州省";
$cs ="贵阳市";
return serialize(["gj"=>$gj,"sf"=>$sf,"cs"=>$cs]);
}
echo f();
echo "<br>";
$dm = unserialize(f());
foreach($dm as $key => $value)
{
echo $key."=>".$value;
}
- 通过serialize将返回数组,使用unserialize过滤,在使用foreach输出返回数据
函数返回示例图
5. 函数的参数
- 值传参
function a(int $b): int
{
$b= $b*2;
return $b;
}
echo a(15);
- 引用传参
function c(float $d): float
{
$d = $d * 3;
return $d;
}
$e = 12;
echo c($e);
- 默认参数
//100内能整除4的数的和
$d = 0;
function js(int $a,int $b=4):int
{
for($i=1;$i<=$a;$i++)
{
if($i % $b == 0)
{
global $d;
$d = $d + $i;
}
}
return $d;
}
echo js(100);
- 剩余参数
function sy(...$sz)
{
return $sz;
}
$res =sy(1,2,3,4,5,6,7,8,9,10);
$sy1 = [1,2,3,4,5,6,7,8,9,10];
//print_r($res);
echo "<br>";
$res1 = sy(...$sy1);
print_r($res1);
两种方法对剩余参数进行调用,关键使用…来替换参数。
没有传送的参数,必须写到传送参数的后面
6. 函数的命名空间
- 同常数一样namespace,全局不能出现相同的函数名,需要必须使用命名空间来定义。
示例
<?php
namespace de {
function demo1()
{
return __FUNCTION__;
}
}
namespace de1{
function demo1() {
return __FUNCTION__;
}
}
namespace{
echo de\demo1();
echo "<br>";
echo de1\demo1();
}
对两个命名空间的访问,