批改状态:合格
老师批语:写的很好!代码要注意规范!
function 函数名称的标识符(参数列表){//函数体,由一条或多条语句组成,也可以为空}标识符:必须满足php标识符的基本要求,只允许字母数字或下划线不允许用数字开头函数:代码复用的重要手段变量:数据复用的重要手段
//声明function sum(int $a,int $b):int{//return :将函数的执行结果返回到调用者return $a + $b;}//调用echo sum(100,100);

//1.自定义函数function getPrice(float $money,float $discount):float{return $money * $discount;}echo '实付金额 = ' . getPrice(5000,0.6),'<hr>';

//2.系统函数$str = "函数调用机制,改进函数调用机制,通过优化参数传递环节,减少了一些指令";//字符串截取//echo '字符串截取mb_substr()系统函数:' . mb_substr($str,0,6),'<hr>';

//3.可变函数$funcName = 'getPrice';echo '(可变函数)实付金额 = ' . $funcName(5000,0.6),'<hr>';

//4.匿名函数//拥有名称的函数叫:命名函数/具名函数$get = function(float $money,float $discount):float{return $money * $discount;};echo '(匿名函数)实付金额 = ' . $get(10000,0.6),'<hr>';

<?php//匿名函数,也叫闭包函数,允许临时创建一个没有指定名称的函数。最经常用作回调函数参数的值//闭包函数也可以作为变量的值来使用//闭包可以从父作用域中继承变量,任何此类变量都应该用 use 语言结构传递进去//父作用域就是父函数$f = function($discount){$p = function (float $money,int $n) use ($discount):float{$total = $money * $n;return ($total > 20000) ? ($total * $discount) : $total;};//将子函数以返回值的方式返回给调用者return $p;};echo '实付金额 = ' . $f(0.8)(3000,10),'<hr>';

<?php//函数必须要有返回值//函数只能返回单一的值function f(){}var_dump(f());echo '<hr>';//返回多值//1.通过字符串拼装function demo1():string{$status = 1;$message = '成功';return $status.','.$message;}echo '字符串拼装:'.demo1(),'<hr>';//通过数组返回function demo2():array{$status = 1;$message = '成功';return ['status' => $status, 'msg' => $message];}echo '数组返回:'.demo2()['msg'],'<hr>';//3.json:是js对象字面量的字符串表示function demo3():string{$status = 0;$message = '成功';return json_encode(['status' => $status, 'msg' => $message]);}echo 'js对象字面量的字符串表示:'.demo3(),'<br>';$data = json_decode(demo3(),true);print_r($data);echo '<hr>';//4.序列化方式echo serialize([1,2,3]),'<br>';function demo4():string{$status = 1;$message = '成功';return serialize(['status' => $status, 'msg' => $message]);}echo '序列化:'.demo4(),'<br>反序列化:';print_r(unserialize(demo4()));

<?php//函数中的参数//1.值参数,这是默认function demo1(float $arg): float{return $arg *= 2;}$val = 100;echo '原来的值:'.$val,'<br>';echo '值参数:'.demo1($val),'<br>';echo '现在的值:'.$val,'<hr>';//2.引用参数,要在参数前添加取地址符&function demo2(float &$arg):float{return $arg *= 2;}$val = 100;echo '原来的值:'.$val,'<br>';echo '引用参数:'.demo2($val),'<br>';echo '现在的值:'.$val,'<hr>';//3.默认参数//凡是有默认值的参数,必须写到没有默认值参数的后面function demo3(float $a=2,float $b=4,string $opt = '+'){$res = 0;switch ($opt){case '+':$res = "$a + $b = " . ($a + $b);break;case '-':$res = "$a - $b = " . ($a - $b);break;case '*':$res = "$a * $b = " . ($a * $b);break;case '/':$res = "$a / $b = " . ($a / $b);break;default:$res = "非法操作符";}return $res;}echo '不传任何参数:'.demo3(),'<br>';echo '不传操作符:'.demo3(100,100),'<br>';echo '传参数:'.demo3(100,5,'*'),'<br>';echo '传错参数:'.demo3(100,5,'#'),'<hr>';//4.剩余参数function add($a,$b,$c){return $a + $b +$c;}echo add(1,2,3),'<br>';//剩余参数用在函数的参数列表中:收集function add1(...$s){return array_sum($s);}//调用参数数量不固定//将剩余参数用在函数的调用表达式中,是:展开$arr = [1,2,3,4,5,6,7,8,9];$res = add1(...$arr);print_r($res);

<?php//回调函数,匿名函数,闭包//异步编程中的函数的参数$data = range(1,100);$arr = array_map(function($item){//array_map — 为数组的每个元素应用回调函数if($item % 2 === 0) return $item;},$data);print_r($arr);//过滤掉空值$res = array_filter($arr,function($item){//array_filter — 用回调函数过滤数组中的单元return $item;});print_r(array_values($res));//array_values() 返回 input 数组中所有的值并给其建立数字索引


<?php//函数的命名空间//只要用到命名空间,全部代码都要用命名空间namespace ns1{function demo1(){return '命名空间1';}}namespace ns2{function demo1(){return '命名空间2';}}//全局空间:匿名空间,默认空间namespace{function demo1(){return '命名空间3';}echo \ns1\demo1();}

声明:function 函数名(){}
调用: echo 函数名();
函数名:由字母数字下划线组成,不能以数字开头
自定义函数
系统函数,系统预定义的函数,不需要自己定义
可变函数,把函数名赋值给一个变量,通过变量来调用
匿名函数,也叫闭包函数,临时创建一个没有指定名称的函数,经常用作回调函数参数的值
函数必须要有返回值,没有返回值会出错
函数不能返回多个值,但可以通过返回一个数组、字符串拼接、js对象字面量的字符串、序列化方式来得到类似的效果
json_encode([]);通过js对象字面量的字符串来表示
serialize([]);通过序列化方式来表示 unserialize反序列化
值传递参数(默认)
引用传递参数 ,在函数定义中参数的前面加上符号 &
凡是有默认值的参数,必须写到没有默认值参数的后面
剩余参数用在函数的参数列表中是:收集,用在函数的调用表达式中是:展开
…表示多个参数 array_sum()求数组所有元素的和
回调函数,匿名函数,闭包
array_map — 为数组的每个元素应用回调函数
array_filter — 用回调函数过滤数组中的单元
array_values() 返回 input 数组中所有的值并给其建立数字索引
只要用到命名空间,全部代码都要用命名空间
namespace 命名空间名称 {}
namespace {} 全局空间:匿名空间,默认空间
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号