批改状态:合格
老师批语:写的还行!回调函数后面会详细讲解的!不用担心!
1.函数声明语法
<?php/*function 函数名称的标识符(参数) {由代码语句组成,也可以为空的函数体}*/
2.函数名命名规则:只允许字母数字或下划线且不允许用数字开头function usename(){}
3.函数示例声明调用,输出:
<?php//函数声明function usename($name):string //其中string是标识返回类型{return "用户名称是:".$name;}// 函数调用echo usename("admin");
1.自定义类型 :开发者自己定义的函数
<?php//自定义函数function wages(int $n,float $money):float{return $n * $money;}echo "本月工资=".wages(20,100);
2.系统函数:可直接使用
<?php//系统函数$num = 5;$arr = [5,6,7,9,1];//判断一个变量值是否在一个数组中,是则返回bool(true),反之测返回bool(false)var_dump(in_array($num, $arr));
3.可变函数
<?phpfunction wages2(int $n,float $money):float{return $n * $money;}$funname = "wages2";echo "本月工资=".$funname(15,100);//输出 本月工资=1500
4.匿名函数(在php中也称为”闭包”: 可以访问父作用域中的变量)
<?php$getwage =function(int $n,float $money):float{return $n * $money;};//输出 本月工资=750echo "本月工资=" . $getwage(15,50);
<?php//当前父作用域是全局变量$dis = 250;//个税$getw = function(int $n,float $money) use($dis):float{$tap = $n * $money;return $tap>5000 ? ($tap-$dis) : $tap;};//输出 本月工资=5750echo "本月工资=" . $getw(30,200);
<?php$f = function($distion){$g = function(int $n,float $money) use($distion):float{$tap = $n * $money;return $tap>500 ? ($tap-$distion) : $tap;};//将子函数以返回值的方式返回给调用者return $g;};//输出 本月工资=5700echo "本月工资=" . $f(300)(30,200);
1.函数必须要有返回值,且函数只能返回单一的值;
2.函数的多值返回方法
<?php// 通过字符串拼装function index1():string{$status = 1;$msg = "登录成功!";return $status.$msg;}//输出 1登录成功!echo index1();
<?php// 数组返回function index2():array{$array = [1,"编辑成功!"];return $array;}//输出 1===编辑成功!echo index2()[0]."===".index2()[1];
<?php//json返回function index3():string{$array = ["status"=>1,"msg"=>"编辑成功!"];//json_encode():对象/数组 转 json, 成功返回 json 编码的 string ,失败返回 falsereturn json_encode($array);}//json_decode(): son 转 对象/数组 , 当第二个参数为true返回 array ,默认是false返回object。$data = json_decode(index3(),true);//输出 array(2) { ["status"]=> int(1) ["msg"]=> string(15) "编辑成功!" }var_dump($data);
<?php// 序列化方式返回function index4():string{$array = ["status"=>1,"msg"=>"编辑成功!"];//serialize():对象/数组 转 序列号格式return serialize($array);}//unserialize(): 反序列化(还原)//输出 array(2) { ["status"]=> int(1) ["msg"]=> string(15) "编辑成功!" }var_dump(unserialize(index4()));
1.值参数,也是默认
<?php//值参数function param(int $data):int{return $data +=10;}//输出 10echo param(10);
2.引用参数:在参数前添加取地址符&
<?phpfunction param1(int &$data):int{// 函数内部对参数的更新会实时映射到外部实际参数return $data +=10;}$val =100;//输出 110echo param1($val),"<br>";//输出 110 $val值会随param1()函数返回值变化而变化,相当于取$dataecho $val;
3.默认参数
<?php//默认参数:凡是有默认值的参数,必须写到没有默认值参数的后面function param2(float $money,string $name="admin" ):string{return "这几天".$name."收获".$money."元";}echo param2(120); //$name为默认参数,即没传参数则使用“admin”//输出 这几天admin收获120元
4.剩余参数
<?php//调用的参数不固定function param_sum(...$day):string{$str = "";for($i=0;$i<count($day);$i++){$str .= $day[$i].";";}return $str;}$arr =["星期一","星期二","星期三","星期四"];echo param_sum(...$arr);//输出 星期一;星期二;星期三;星期四;
<?phpnamespace ns1 {function index($name){return "ns1中的index的" . $name;}}namespace ns2 {function index($username){$res = \ns1\index($username);return "ns2中的index的调用".$res;}}// 全局空间: 匿名空间,默认空间namespace {echo ns2\index("admin");// 输出 ns2中的index的调用ns1中的index的admin}
对回调函数,异步的流程使用不太清楚
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号