批改状态:合格
老师批语:世上没有一个行业是容易的
| 序号 | 类型 | 语法 | 描述 |
|---|---|---|---|
| 1 | 自定义函数 | function getName(){...} |
用户根据业务需求创建 |
| 2 | 系统函数 | substr(), count()... |
也叫预定义函数,不必声明直接调用 |
| 3 | 可变函数 | $funcName(); |
函数名使用变量表示 |
| 4 | 匿名函数 | $f = function (){...} |
也叫”闭包”或”函数表达式”,常用做回调处理 |
<?php// 函数// 1. 自定义函数function totalCost($unitcost,$number){return $unitcost*$number;}echo '合计金额:'.totalCost(12,10);echo '<hr>';// 2. 系统函数echo implode (' ', ['我爱我的祖国','一刻也不能分割']);echo '<hr>';// 3. 可变函数$money = 'totalCost';echo '3斤菜心的合计金额:'.$money(4.5,3);echo '<hr>';// 4. 匿名函数$money=function($discount){return function ($unicost,$number)use($discount):float{$total = $unicost*$number;return $total >= 100 ? $total * $discount:$total;};};echo '10斤以上团购价:'.$money(0.9)(12,20).' 原价:'.$money(1)(12,20);

| 序号 | 场景 | 描述 |
|---|---|---|
| 1 | return |
可以返回任何类型的值,包括函数类型 |
| 2 | 无return |
遇到}也会返回, 默认返回null |
| 序号 | 返回值类型 | 描述 |
|---|---|---|
| 1 | string |
字符串拼接 |
| 2 | array |
数组 |
| 3 | json |
JSON 字符串 |
| 4 | serialize |
序列化字符串 |
json 和序列化,使用时需要进行解码操作
<?php// 返回值// 原则: 单值返回// 如果需要返回多值// 1. 字符串拼装// 2. 数组// 3. JSON字符串// 4. 序列化: 字符串// 1. 字符串拼装function example1():string{$who = '我';$how = '用政府发的消费券';$what = '买电视机';return $who.$how.$what.'。';}echo example1();echo '<hr>';// 2. 数组function example2():array{return ['who'=>'我','how'=>'用政府消费券','what'=>'买电视机。'];}// echo example2();$res = print_r(example2(),true);printf('<pre>%s</pre>',$res);echo '<hr>';// 3. JSON字符串function example3():string{return json_encode(['who'=>'我','how'=>'用政府消费券','what'=>'买电视机。']);}echo example3();echo '<br>';$data = example3();// 将json格式的字符串还原/解析为php对象/数组$var = json_decode($data, true);print_r($var);echo '<hr>';// 4. 序列化: 字符串function example4():string{return serialize(['who'=>'我','how'=>'用政府消费券','what'=>'买电视机。']);}echo example4();echo '<br>';$unser = unserialize(example4());print_r($unser);echo '<br>';printf('<pre>%s</pre>',print_r($unser,true));echo '<hr>';

参数类型
| 序号 | 类型 | 描述 |
|---|---|---|
| 1 | 值参数 | 默认传参方式 |
| 2 | 引用参数 | 改变原始调用参数值 |
| 3 | 默认参数 | 调用时允许省略的参数 |
| 4 | 剩余参数 | 调用参数数量不确定 |
<?php// 函数参数// 1. 值参数// 2. 引用参数// 3. 默认参数// 4. 剩余参数// 1. 值参数, 默认function example1(float $sum):float{return $sum += 1;}$var = 9;echo '$sum = '.example1($var);echo '<br>';// 在函数中改变了调用参数的值,但原始调用参数并没有发生变化echo '$var = '.$var;echo '<hr>';// 2. 引用参数// 如果在参数前面使用了取地址符:&function example2(float &$sum):float{return $sum += 1;}$var = 10;echo '$sum = '.example2($var);echo '<br>';// 则会改变原始调用参数的值echo '$var = '.$var;echo '<hr>';// 3. 默认参数function cal(int $a,int $b,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 cal(50,20);echo '<br>';echo cal(50,20,'-');echo '<br>';echo cal(50,20,'*');echo '<br>';echo cal(50,20,'/');echo '<br>';echo cal(50,20,'$');echo '<hr>';// 4. 剩余参数// (1) 用在函数的形式参数列表中,表示"收集",将多个离散的参数打包到一个数组中处理function sums(...$arrs):float{return array_sum($arrs);// return array_product($arrs);}$arr=[1,2,3,4,5,6,7,8,9];// (2) 用在函数的调用参数列表中,表示"展开",还原将一个数组展开成一个个离散的值echo sums(...$arr);

总结:
php的函数是一个重要的基础知识,和变量一样是个重要的概念,我通过再看一遍老师的课堂笔记和视频讲课,自己再输入代码一遍,才有点印象,不容易啊。继续加油!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号