批改状态:合格
老师批语:
| 序号 | 类型 | 语法 | 描述 |
|---|---|---|---|
| 1 | 自定义函数 | function getName(){...} |
用户根据业务需求自己创建 |
| 2 | 系统函数 | substr(), count()... |
也叫预定义函数,不必声明直接调用 |
| 3 | 可变函数 | $funcName(); |
函数名使用变量表示 |
| 4 | 匿名函数 | $f = function (){...} |
也叫”闭包”或”函数表达式”,常用做回调处理 |
<?php// 1. 自定义函数// 格式打印数组function inpre(array $arr){echo '<pre>';print_r($arr);echo '</pre>';}$arr = ['html', 'php', 'css', 'js'];inpre($arr);echo '<hr>';// 2. 系统函数// `strtoupper();`: 将字符串转化为大写$str = 'zhao guobao, jiang guoping, qin bingjian';echo strtoupper($str) .'<br>';// `ucfirst();`: 将字符串的首字母转换为大写$str = 'nam moi vui ve!';echo ucfirst($str);echo '<hr>';// 3. 可变函数$getTien = function(float $gia, float $so):float{return $gia * $so;};echo $getTien(10000, 6);echo '<hr>';// 4. 匿名函数: 访问父作用域变量function demo2(float $discont){return function(float $gia, float $so) use($discont) :float{return $gia * $so * $discont;};}echo demo2(0.8)(5000, 4);
代码演示:
[http://help10086.cn/0119/demo1.php]
| 序号 | 类型 | 描述 |
|---|---|---|
| 1 | 值参数 | 默认传参方式 |
| 2 | 引用参数 | 改变原始调用参数值 |
| 3 | 默认参数 | 调用时允许省略的参数 |
| 4 | 剩余参数 | 调用参数数量不确定 |
<?php// 函数参数// 1. 值参数function demo4(float $so){return $so *= 8;}$value = 100;echo demo4($value) , '<br>';// 在函数中改变了调用参数的值,但原始调用参数并没有发生变化echo $value;echo '<hr>';// 2. 引用参数function demo41(float &$so){return $so *= 8;}$value = 100;echo demo41($value) , '<br>';// 如果在参数前面使用了取地址符,则会改变原始调用参数的值echo $value;echo '<hr>';// 3. 默认参数:参数有默认值// 默认参数必须写在必选参数的后面function demo42(float $a, float $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 demo42(10, 20), '<br>';echo demo42(10, 20, '*'), '<br>';echo demo42(10, 20, '#'), '<br>';echo '<hr>';// 4. 剩余参数// ...: 参数归纳:function demo43(...$args ) : float{// return $args;return array_sum($args);// return array_product($args);}print_r(demo43(3,4,7,8,24));echo demo43(1,2,3,4,5,6,9,22,67), '<br>';// 调用参数$arr = [4,6,7,45,63,99,22,67];// ...:// 1. 用在函数的形式参数列表中,表示"收集",将多个离散的参数打包到一个数组中处理// 2. 用在函数的调用参数列表中,表示"展开",还原将一个数组展开成一个个离散的值print_r(demo43(...$arr));echo '<hr>';
[http://help10086.cn/0119/demo2.php]
return可以返回任何类型的值,包括函数类型return遇到}也会返回, 默认返回null多值返回方法
| 序号 | 返回值类型 | 描述 |
|---|---|---|
| 1 | string |
字符串拼接 |
| 2 | array |
数组 |
| 3 | json |
JSON 字符串 |
| 4 | serialize |
序列化字符串 |
json 和序列化,使用时需要进行解码操作
<?php// 函数返回多值的方法// 1. 字符串拼装function demo3() : string{$quocgia = 'VietNam';$thudo = 'HaNoi';return '国家: ' .$quocgia .', 首都: ' . $thudo;}echo demo3();echo '<hr>';// 2. 数组function demo31($gia, $so) : string{$arr = [$gia + $so, $gia - $so, $gia * $so, $gia / $so];return print_r($arr);}demo31(200, 100);echo '<hr>';// 3. JSON字符串// json: 是用js对象字面量的方式来表示数据,是一种轻量级通用的数据交换或传输格式// json本质上就是一个具有一定结构和格式的字符串, 不过这种格式得到了公认,几乎所有编程语言都有支持它的接口function demo32() : string{// json_encode(): 将php数据编码为json格式的字符串返回return json_encode(['name'=>'dashu', 'mail'=>'dashu@qq.com']);}$data = demo32();echo $data .'<br>';// 将json格式的字符串还原/解析为php对象/数组$var = json_decode($data, true);print_r($var);echo '<hr>';// 4. 序列化: 字符串function demo33() : string{return serialize(['name'=>'dashu', 'mail'=>'dashu@qq.com']);}echo demo33() .'<br>';// 反序列化才可以使用$arr =unserialize(demo33());print_r($arr);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号