批改状态:合格
老师批语:
1、函数就是一段代码块
2、函数可以实现模块化编程
函数定义
function 函数名(参数1,参数2,…){
//函数体
//return
}
PHP 中提供了 return 语句来返回函数的运行结果,其语法格式如下: return 返回值; 可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。
function square($num){return $num * 2;}echo square(2),'<br>'; //输出 4.
// 返回数组function numbers(){return array(1, 2, 3);}var_dump(numbers()); //输出 array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }.
// 返回json字符串function jsons(){return json_encode(array('code'=>1,'msg'=>'登陆成功'),JSON_UNESCAPED_UNICODE);}var_dump(jsons()); //输出 string(31) "{"code":1,"msg":"登陆成功"}".
function selizes(){return serialize(array('code'=>1,'msg'=>'登陆成功'));}var_dump(selizes()); //输出 string(51) "a:2:{s:4:"code";i:1;s:3:"msg";s:12:"登陆成功";}".
function funs(){return function (){};}var_dump(funs()); //输出 object(Closure)#1 (0) { }.
函数的参数有形式参数和实际参数
1、函数的参数默认是值传递
2、如果要传递地址,在参数前面加&
3、如果是地址传递,不能直接写值
参数个数不匹配
1、实参少于形参(报错)
2、实参多于形参,只取前面对应的值
3、func_num_args() //获取参数的个数
4、func_get_args() //获取参数数组
参数默认值
1、在定义函数的时候给形参赋值就是参数的默认值
2、默认值必须是值,不能用变量代替
3、默认值可以使用常量
4、有默认值的写在后面,没有默认值的写在前面
function sum($a, $b, $c=10){return $a + $b + $c;}echo sum(1,2,20); // 输出 23echo sum(1, 2); //输出 13 c使用了默认值10echo sum(1, 2, 30, 40); //输出 33 不报错
定义变长参数...$参数
当使用变长参数时,可使用…$arry展开数组
function sum(...$numbers) {$acc = 0;foreach ($numbers as $n) {$acc += $n;}return $acc;}echo sum(1, 2, 3, 4); //输出 10
参数约束(7.0后)
类型约束
//约束$name是字符串型,$age是整型function fun(string $name,int $age) {echo "姓名:{$name},年龄:{$age}";}fun('tom',22); //输出姓名:tom,年龄:22
返回值约束
function fun(int $num1,int $num2):int { //必须返回整型return $num1+$num2;}echo fun(10,20); //输出 30
回调函数
回调函数就是一个作为函数的参数来传递的函数. 回调函数在主线程执行的过程中,突然跳去执行设置的回调函数,回调函数执行结束后, 再回到主线程处理接下来的流程
php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持.
call_user_func()call_user_func($callback,参数1,参数2,…)的参数个数根据回调函数的参数来确定的。
// 自定义一个匿名函数$sum = function ($a, $b) {return $a + $b;};echo call_user_func($sum,2,4); //输出 6
call_user_func_array()call_user_func_array ($callback ,$param_arr),它只有两个参数。是以数组的形式接收回调函数的参数
// 自定义函数$sum = function (...$arr) {$total = 0;foreach ($arr as $v) {$total += $v;}return $total;};echo call_user_func_array($sum, array(1,2,3,4,5)); //输出 15
匿名函数
匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数 callable参数的值。
// 匿名函数$greet = function($name){printf("Hello %s\r\n", $name);};$greet('World'); //输出 Hello World$greet('PHP'); //输出 Hello PHP
匿名函数可以用 use 语言结构从父作用域中继承变量。
$play = '吃过了么';$greet = function($name) use ($play){printf("Hello %s,%s\r\n", $name, $play);};echo $greet('张三'); //输出 Hello 张三,吃过了么
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号