批改状态:合格
老师批语:代码很工整
// 求两个数的余数function remainder(float $x, float $y) : string // 这里使用 flaot, int 都会报错{return "$x % $y = " . ($x % $y);}var_dump(remainder(7,4)); // string(9) "7 % 4 = 3"
// mb_strlen(): 是系统函数,不需要定义可以直接使用,用来获取字符串的长度// 多字节、空格和英文被统计为 1$str = '中国 china';var_dump(mb_strlen($str)); //int(8)
初步的理解是函数名和方法名可以使用变量来定义,PHP 将寻找与变量名同名的函数,并尝试执行。
function func() {echo "\$var = 'func',所以 ";echo '$var() 等同于 func()';}$var = 'func';$var(); // 可以正常调用 func() 函数
可以把一个没有名称的函数赋值给一个变量
$hello = function ($name) {return "Hello $name ";};echo $hello('world'); // Hello worldecho $hello('php'); // Hello php
函数返回值的原则是单值返回,想要返回多值可以借助以下四种方法:
序列化 字符串
字符串拼接方式
function demo1($surname, $name) {return '姓:' . $surname . ',名:' . $name;}echo demo1('李', '小龙'); // 姓:李,名:小龙
把返回值赋值为数组
function demo2($surname, $name) : array{return ['姓氏'=>$surname, '名字'=>$name];}printf('<pre>%s</pre>', print_r(demo2('李', '四'), true));
运行结果:
Array([姓氏] => 李[名字] => 四)
返回值 JSON
function demo3($surname, $name) : string{return json_encode(['姓氏'=>$surname, '名字'=>$name]);}$date = json_decode(demo3('李', '小龙'));printf('<pre>%s</pre>', print_r($date, true));
运行结果:
stdClass Object([姓氏] => 李[名字] => 小龙)
function demo4($surname, $name) : string{return serialize(['姓氏'=>$surname, '名字'=>$name]);}$date = unserialize(demo4('张', '三'));printf('<pre>%s</pre>', print_r($date, true));
运行结果:
Array([姓氏] => 张[名字] => 三)
function person($job, &$name, $sex = '男'){return ['职业'=>$job, '姓名'=>$name='李四', '性别'=>$sex];}$name = '张三';$arr = person('律师', $name);printf('<pre>%s</pre>', print_r($arr, true));echo $name;
打印结果
Array([职业] => 律师[姓名] => 李四[性别] => 男)李四
符号为三个点号 “ … ”,放在形参中,表示 收集 ,用在实参中表示 展开
function test(...$args){// 计算不定参数的乘积return array_product($args); // int(120)// 计算不定参数的和// return array_sum($args); //int(15)}$arr = [1,2,3,4,5];// 如果这里没有 ... 符号,会只计算第一个参数的值// 加上 ... 后,会展开 $arr 中的所有参数,并计算乘积或和var_dump(test(...$arr));
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号