批改状态:合格
老师批语:总结的非常好,遇到实在不理解的可以放一放。
其中,函数名和变量一样,必须由数字 字母 下划线组成,可为空。参数也可为空。函数体由多条语句构成,也可为空。
function 函数名(参数){函数体}
function score(string $a,int $b):string{//php函数名后冒号+数据类型(返回值类型限制/php新特性)return $a.'的分数是'.$b;}echo score('小明',90).'<hr>';

function getPrice(float $money,float $discount):float{return $money*$discount;}echo '最终金额是:'.getPrice(981,0.5).'<hr>';

使用substr函数的结果是:返回 ‘函数’两个词,UTF8下,每个汉字占三个字节,如果截取4个就乱码了。substr() 函数,它只针对英文字符
$str='方法的返回值必须为一个User类实例;delete方法的返回值必须是布尔数据类型';echo substr($str,0,6).'<br>';echo mb_substr($str,0,6).'<hr>';

function getPrice(float $money,float $discount):float{return $money*$discount;}$function='getPrice';echo '最终实付'.$function(500,0.2).'<hr>';

$anonymousFunc = function($username){echo $username;};$anonymousFunc("乔峰!");echo '<hr>';

function closureFunc(){$anonymousFunc = function(){echo "乔峰2";};$anonymousFunc();//普通函数内部调用了匿名函数}closureFunc();//输出: 乔峰2echo '<hr>';

function closureFunc2(){$username = '乔峰3';$anonymousFunc = function() use($username){echo $username;};$anonymousFunc();//此处调用了匿名函数}closureFunc2();//输出: 乔峰3echo '<hr>';

function closureFunc3(){$username = '乔峰4';$anonymousFunc = function() use($username){echo $username;};return $anonymousFunc;// 函数返回匿名函数}$func = closureFunc3();$func(); //然后调用$func()echo '<hr>';

function closureFunc4(){$username = '乔峰5';$anonymousFunc = function($lover,$skill) use($username){echo $username.$lover.$skill;};return $anonymousFunc;}$func = closureFunc4();$func("阿朱","擒龙手");//乔峰阿朱擒龙手echo '<hr>';

$anonymousFunc2 = function($username){echo $username;};//定义普通函数,anonymousFunc2 为参数变量function myFunc($anonymousFunc2){$anonymousFunc2("段誉3");}myFunc(function($username){ //这里调用普通函数,并把 匿名函数作为参数 传给了myFunc中的$anonymousFuncecho $username;});//输出 段誉3

function demo1():string{$status=1;$message='成功';return $status.','.$message;};echo demo1().'<hr>';

function demo22():array{$sex='女';$message1='小王子';$message2='小公主';return ['sex'=>$sex,'message1'=>$message1,'message2'=>$message2];};echo demo22()['sex']==='男'?demo22()['message1']:demo22()['message2'];echo '<hr>';

function demo32():string{$sex='男';$message1='小王子';$message2='小公主';return json_encode(['sex'=>$sex,'message1'=>$message1,'message2'=>$message2]);//对JSON格式的字符串进行编码};echo demo32().'<br><br>';echo gettype(demo32()).'<br><br>';//查看类型 返回的是字符串print_r (json_decode(demo32())); //返回对象echo '<br><br>';print_r (json_decode(demo32(),true));//强制返回数组echo '<hr>';

function demo44():string{$sex='男';$message1='小王子';$message2='小公主';return serialize(['sex'=>$sex,'message1'=>$message1,'message2'=>$message2]);//对JSON格式的字符串进行编码};echo demo44().'<br>';//反序列化,还原print_r(unserialize(demo44()));

$age=12;$num=10;$res=function (float $number) use ($age) :float{return $number+=$age;};echo '小明今年'.$age.'岁,'.'10年后他是'.$res($num).'岁<br>';echo $num.'<hr>';

$age2=12;$num2=10;$res2=function (float &$number) use ($age2) :float{return $number+=$age2;};echo '小明今年'.$age2.'岁,'.$num2.'年后他是'.$res2($num2).'岁<br>';echo $num2.'<hr>';

function helloWord(float $number,string $sex='北京'):string{return $number>18?$sex.'大人':$sex.'小孩';};$age3=20;$age4=12;echo helloWord($age3,'上海').'<br>';echo helloWord($age4).'<hr>';

将剩余参数用在函数的调用表达式中 是展开
function demo4(...$args){for($i=0,$res2=1;$i<count($args);$i++){$res2*=$args[$i];}return $res2; //数组求和}echo demo4(1,2,5,4,10);
$arr=[1,2,5,10];print_r(demo4(...$arr));

namespace aa{function demo1(){echo 'AA张三';};};namespace bb{function demo1(){echo 'BB张三';};};namespace{echo \aa\demo1();echo \bb\demo1();}

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号