批改状态:合格
老师批语:能理解就好
function 函数名称(类型: 参数列表): 返回值类型{// 函数体return 返回值;}
| 序号 | 类型 | 语法 | 描述 |
|---|---|---|---|
| 1 | 自定义函数 | function getName(){...} |
用户根据业务需求创建 |
| 2 | 系统函数 | substr(), count()... |
也叫预定义函数,不必声明直接调用 |
| 3 | 可变函数 | $funcName(); |
函数名使用变量表示 |
| 4 | 匿名函数 | $f = function (){...} |
也叫”闭包”或”函数表达式”,常用做回调处理 |
代码示例
<?php//自定义函数//BMI计算器function bmi($weight,$height):float{return $weight/($height**2);}//单位为kg/mecho '您的身体健康指数为'.bmi(60,1.75).'<br>';//系统函数$str='今天晚上讲的是php第四章';echo mb_substr($str,0,6).'<br>';//取出str字符串前6个字符,第一位从0开始$arr=['php','html','js','css'];echo '<pre>'.var_export(array_slice($arr,1,3),true).'<br>';//从数组第2位开始取3位//可变函数$a='bmi';echo $a(70,1.6).'<br>';//用可变函数调用BMI计算器//匿名函数//BMI计算器加上身高体重单位转换,假设转换单位为:斤=》公斤 cm=》m$arr1=[2,100];$result=function ($weight,$height)use($arr1){return ($weight/$arr1[0])/(($height/$arr1[1])**2);};echo $result(120,175),'<br>';//改写为父作用域为函数$bmi_pro=function (array $arr){return function ($weight,$height)use($arr){return ($weight/$arr[0])/(($height/$arr[1])**2);};}echo $bmi_Pro([2,100])(120,175);
| 序号 | 场景 | 描述 |
|---|---|---|
| 1 | return |
可以返回任何类型的值,包括函数类型 |
| 2 | 无return |
遇到}也会返回, 默认返回null |
| 序号 | 返回值类型 | 描述 |
|---|---|---|
| 1 | string |
字符串拼接 |
| 2 | array |
数组 |
| 3 | json |
JSON 字符串 |
| 4 | serialize |
序列化字符串 |
json 和序列化,使用时需要进行解码操作
代码示例
<?php//拼接字符串function body():string{$height=175;$weight=60;return '身高为'.$height.'cm,体重为'.$weight.'g<br>';};echo body();//转化为数组function body_1() : array{$arr=['height'=>175,'weight'=>60];return $arr;};echo '身高为'.body_1()['height'].'cm,体重为'.body_1()['weight'].'g<br>';//jsonfunction body_2():string{return json_encode(['height'=>175,'weight'=>60]);}echo var_export(json_decode(body_2()),true).'<br>';//序列化function body_3():string{return serialize(['height'=>175,'weight'=>60]);}echo var_export(unserialize(body_3()),true);
参数类型
| 序号 | 类型 | 描述 |
|---|---|---|
| 1 | 值参数 | 默认传参方式 |
| 2 | 引用参数 | 改变原始调用参数值 |
| 3 | 默认参数 | 调用时允许省略的参数 |
| 4 | 剩余参数 | 调用参数数量不确定 |
代码示例
<?php//参数传递function add($number){return ++$number;}$number=1;echo add($number).'<br>';echo add($number).'<br>';//引用传递function add_1(&$number){return ++$number;}$number=1;echo add_1($number).'<br>';echo add_1($number).'<br>';//引用传递直接调用变量的地址//默认参数function name($name='张三'){return $name;}echo name().'<br>';echo name('李四').'<br>';//剩余参数function add_2(){$quantity=func_num_args();$total = 0;foreach (func_get_args() as $value) {$total +=$value;}return '输入参数'.$quantity.'个,和为'.$total;}echo (add_2(1,2,3,4,5)).'<br>';// 使用剩余参数简化function add_3(...$args){$add=0;$total=count($args);foreach($args as $result){$add+=$result;}return '输入参数'.$total.'个,和为'.$add;}echo add_3(1,2,3,4,5).'<br>';function add_4(...$arr){$add=array_sum($arr);$total=count($arr);return '输入参数'.$total.'个,和为'.$add;}echo add_4(...[1,2,3,4,5]);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号