批改状态:合格
老师批语:图文结合,完成的不错
函数样式:function 函数名称标识符(参数){函数体,由一条或多条语句组成也可以为空}
函数标识符:必须满足 php 标识符的基本要求,只允许字母,数字或下划线且不允许数字开头
<?phpfunction sum(int $a, int $b){return "$a+$b=". ($a+$b);}echo sum(10,20);

$str = '零基础开始,能解决常规业务逻辑,PHP操作MySQL增删改查';// substr用字节获取一个中文有3个字节echo substr($str, 0, 6),'<hr>';//返回'零基'// mb_substr:处理多字节echo mb_substr($str, 0, 6),'<hr>';//返回'零基础开始,'
$s = 'sum';function sum(int $a, int $b){return "$a+$b=". ($a+$b);}echo $s(10,20),'<hr>';//返回结果10+20=30
$s = function (int $a, int $b){return "$a+$b=". ($a+$b);};echo $s(10,20),'<hr>';//返回结果10+20=30
匿名函数:在 php 中也称为’闭包’可以访问父作用域中的变量
$c = 5;$s = function (int $a, int $b) use ($c){return "($a+$b)*$c=". ($a+$b)*$c;};echo $s(10,20),'<hr>';
$a = function($c){$s = function (int $a, int $b) use ($c){return "($a+$b)*$c=". ($a+$b)*$c;};//把$c的值返回给调用者return $s;};echo $a(5)(10,20);

多值返回
function payment(){$money = '商品总计为5000';$rebate = '可以享受9折优惠';return $money . $rebate;}echo payment();

function payment1(){$money = '商品总计为5000';$rebate = '可以享受9折优惠';return [$money,$rebate];}$arr= print_r (payment1(),true);echo '<pre>'.$arr.'</pre>';echo '<hr>';

function payment2(){$money = '商品总计为5000';$rebate = '可以享受9折优惠';return json_encode(['mon'=>$money,'reb'=>$rebate]);}echo payment2(),'<br>';// 还原成对象$data = json_decode(payment2());print_r($data);echo '<hr>';

function payment3(){$money = '商品总计为5000';$rebate = '可以享受9折优惠';return serialize(['mon'=>$money,'reb'=>$rebate]);}echo payment3(),'<br>';// 用反序列化还原print_r (unserialize(payment3()));echo '<hr>';

1.值参数:默认function sum($a){return $a *= 2;}$b = 20;echo sum($b),'<br>';echo $b,'<hr>';
function sum1(&$a){return $a *= 2;}$b = 20;echo sum1($b),'<br>';echo $b,'<hr>';

function sum2($a=10,$b=5,$c = '+'){$d=0;switch($c){case '+':$d = "$a+$b=".($a+$b);break;case '-':$d = "$a-$b=".($a-$b);break;case '*':$d = "$a*$b=".($a*$b);break;case '/':$d = "$a/$b=".($a/$b);break;default:$d = '非法字符';}return $d;}echo sum2(),'<hr>';//没有实参,使用默认参数echo sum2(5,20,'*'),'<hr>';echo sum2(30),'<hr>';//实参数量少于形参时从左往右覆盖,没有实参的就使用默认参数

// ...用在函数内部是收集function sum1(...$arr){// 数组求和return array_sum($arr);}echo sum1(1,2,3,4,5),'<hr>';// 用在表达式中是展开$a = [1,2,3,4,5,6,7,8,9];echo sum1(...$a),'<br>';

$data = range(1,20);// 使用回调函数$a = [1,false,3,'',2,0,4,];$arr = array_map(function($a){if($a % 2 === 0)return $a;},$data);// 过滤空值function tru($v){if($v){return true;}else{return false;}}$arrs = array_filter($arr,'tru');$as = array_filter($a,'tru');print_r(array_values($arrs));echo '<hr>';print_r(array_values($as));

需要使用同名函数时必须创建命名空间
脚本中只要创建了命名空间那么所有php代码必须写在命名空间中
访问必须在全局空间(namespace)中进行访问
function arr(){}function arr(){}

namespace name1{function arr(){return 'php中文网';}}namespace name2{function arr(){}}// namespace是全局(匿名)空间,访问必须这里面访问namespace{echo name1\arr();}

总结
1.了解函数的创建规则
2.函数需要返回多值时应该如何操作
3.对于回调函数还需了解和其使用的场景
4.对于函数的参数了解和熟悉
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号