批改状态:合格
老师批语:作业有点简洁,可以多加点文字描述!
函数声明示例:
<?php// 函数声明:function 函数名称的标识符(参数列表){一条或多条语句组成函数体,可为空}// 标识符:只允许字母、数字、下划线,不允许用数字开头// 意义:代码复用的重要手段// :后面表示结果是字符串function getName($name, int $age):string{return $name . '今年' . $age . '岁了。';}echo getName('小刚', 18);
示例:
<?php// 1.自定义函数:function getAge(int $born, int $now): int{return $now - $born;}echo getAge(1985, 2020);echo '<br>';// 2.系统函数:// 返回当前时间戳echo '当前时间戳:' . time();// 转换时间戳echo '当前时间为' . date('yy-m-d', time());echo '<br>';// 3.可变函数$age = 'getAge';echo '小刚的年纪:' . $age(1985, 2020) . '岁';echo '<br>';// 4.匿名函数,在php中也叫做闭包,可以访问父作用域中的变量$age = function (int $born, int $now): int {return $now - $born;};echo '小刚的年纪:' . $age(1985, 2020) . '岁';echo '<hr>';// 访问全局变量示例:$name = '小刚';$call = function (int $phone, int $height) use ($name): string {return $name . '的电话是:' . $phone . '身高是:' . $height;};echo $call(13888888888, 190);echo '<br>';// 访问父函数示例:$str = function ($name) {$call = function (int $phone, int $height) use ($name): string {return $name . '的电话是:' . $phone . '身高是:' . $height;};return $call;};echo $str('小明')(13666666666, 170);
示例;
<?php// 函数的返回值一定存在function func(){}// 结果为nullvar_dump(func());echo '<br>';// 1.字符串拼装function str(): string{$name = '小刚';$age = 18;// return $name . $age . '岁了';// 还可以加入html代码return '<h3>' . $name . $age . '岁了' . '</h3>';}echo str() . '<hr>';// 2.数组返回function arr(): array{$name = '小刚';$age = 18;return ['名字' => $name, '年龄' => $age];}// 数组必须指定元素echo arr()['名字'] . arr()['年龄'];echo '<hr>';// 3.json方式function js(): string{$name = '小刚';$age = 18;// json_encode()将数组转换成json格式(javascript对象)return json_encode(['名字' => $name, '年龄' => $age]);}// json_decode()将json格式的数据解析print_r(json_decode(js(), true));echo '<hr>';// 4.序列化方式echo serialize(['a', 'b', 'c']) . '<br>';// 用于函数中function ser(): string{$name = '小刚';$age = 18;return serialize(['名字' => $name, '年龄' => $age]);}echo ser() . '<br>';// 反序列化print_r(unserialize(ser()));
示例
<?php// 1.值参数(默认)function func1(int $a, int $b): int{$c = $a + $b;return $c;}echo func1(1, 2) . '<br>';// 2.引用传参:将值参数与私有变量绑定function func2(int &$b): int{$b -= 2;return $b;}$d = 5;// $d与$b绑定echo func2($d) . '<br>';// 3.默认参数function func3(int $id, string $opt = '没有用户'){$res = '默认用户';switch ($opt) {case '小刚':$res = $id . '是' . '管理员' . '类型的用户';break;case '小明':$res = $id . '是' . '运营' . '类型的用户';break;case '小红':$res = $id . '是' . '制造' . '类型的用户';break;case '小小':$res = $id . '是' . '开发' . '类型的用户';break;default:$res = '非法用户';}return $res;}echo func3(1, '小刚'), '<br>';echo func3(3), '<br>';echo func3(5, '阿青'), '<br>';// 不给参数会报错// echo func3();// 4.剩余参数,将参数打包到数组中,可以不指定参数名也可以叫"收集"function func4(...$arr){// return $arr;// 返回数组中所有值的和return array_sum($arr);}// 实参列表// $res = func4('小明', '小刚', '小红');// $res = func4(1, 2, 3);// print_r($res);// 形参列表$ar = [2, 4, 6, 8, 10, 12, 14];$res = func4(...$ar);print_r($res);
异步处理动态数据,不会阻塞。
示例
<?php// 回调函数,异步处理动态数据,不会阻塞// range()创建整数列表$arr = range(2, 50, 2);// print_r($arr);$newArr = array_map(function ($item) {if ($item % 3 === 0) return $item;}, $arr);// 得出数组中被3整除的值print_r($newArr);echo '<hr>';// 过滤空值array_filter(数组, 回调)$data = array_filter($newArr, function ($item) {return $item;});print_r($data);// 重排键名array_values(数组)print_r(array_values($data));
示例
<?php// 函数命名空间// 同一空间内不能重复命名,只要代码中使用了命名空间,其他成员必须都使用namespace space1 {function func1(){return 'space1';}echo func1() . '<br>';}// 报错// function func1()// {// }namespace space2 {function func1(){return 'space2';}echo func1() . '<br>';}// 全局空间namespace {function func1(){return 'namespace';}echo func1() . '<br>';}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号