函数在任何编程语言中都是不可或缺的一类,PHP 的真正威力源自于它的函数,在 PHP 中,提供了超过 1000 个内建的函数。
本文对php函数的基础知识进行总结,文章包含内容如下:
1.自定义函数
2.函数的返回值
3.形参与实参
4.剩余参数
5.引用参数
6.匿名函数
7.函数的命名空间
一、自定义函数
//函数:完成特定功能的代码块
function 函数名称的标识符([参数列表(可选)]){
函数体
return 返回值(可选)
}
//函数是代码块的复用手段
//自定义函数
function sum($a,$b){
return $a+$b;
}
sum(1,2);
二、函数的返回值
函数没有返回值,返回null
函数只能返回单一的值,返回值的数据类型可以是任意类型
函数遇到return语句,立即结束程序执行,return后的代码不会被执行
函数返回多个值例子:
// 通过字符串的拼接
function admin(){
$status = 1;
$message = '修改成功';
return 'code' . $status .',<span>'. $message .'</span>';
}
echo admin();//code1,修改成功
// 通过数组
function admin1(){
$status = 1;
$message = '修改成功';
return ['status'=> $status,'msg'=>$message];
}
print_r(admin1());//Array ( [status] => 1 [msg] => 修改成功 )
//json
function admin2(){
$status = 1;
$message = '修改成功';
return json_encode(['status'=>$status,'masg'=>$message]);
}
echo admin2(); //{"status":1,"masg":"\u4fee\u6539\u6210\u529f"}
$data = json_decode(admin2(),true);
print_r($data);//Array ( [status] => 1 [masg] => 修改成功 )
// 序列化 serialize
function admin3(){
$status = 1;
$message = '修改成功';
return serialize(['status'=>$status,'msg'=>$message]);
}
echo admin3();//a:2:{s:6:"status";i:1;s:3:"msg";s:12:"修改成功";}
// 反序列化
print_r(unserialize(admin3())['msg']);//修改成功
三、形参与实参
注意:实际参数一定要和形式参数的个数相相同,并且一一对应,不然程序会出错。
四、剩余参数
剩余参数用在参数列表中 收集归纳作用
//function test($a,$b,$c){
// return $a+$b+$c;
//}
//echo test(5,6,7);//18
// 调用参数的数量不固定
//echo test(3,1,4,4,1213);
// 剩余参数用在参数列表中 收集归纳作用
//array_sum() 返回数组中所有值的和
function test(...$args){
return array_sum($args);
}
echo test(3,1,4,4,1213);//1225
//print_r(test(3,1,4,4,1213));
$arr = [3,1,4,4,1213];
$res = test(...$arr);
echo $res;
五、引用参数
php的引用参数(就是在变量或者函数、对象等前面加上&符号)
function ref(&$arg){
return $arg +=20;
}
$val = 20;
echo ref($val);//40
echo $val;//40 把$val的内存储存区块相对地址,导入到函数中,在函数里发生的任何变化都会对父程序造成影响
六、匿名函数/回调函数
回调函数,用于异步编程中函数的参数,异步编程->对函数执行的时间和顺序不可预测,通过事件/回调的方式来唤醒主程序。
官方介绍:匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数 callable参数的值。当然,也有其它应用的情况。
$data = range(1,100);
print_r($data);
echo "<hr>";
$a = array_map(function($item){// $item 临时变量,总是变化的
if($item % 2==0) return $item;
},$data);
print_r($a);
echo "<hr>";
$b = array_filter($a,function($item){
return $item;
});
print_r(array_values($b));
1.array_map定义和用法
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
提示:您可以向函数输入一个或者多个数组。
2.array_filter 用回调函数过滤数组中的单元
3.array_values()
定义和用法
array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名。
提示:被返回的数组将使用数值键,从 0 开始并以 1 递增。
php内置函数入口:
官网 https://www.php.net/manual/zh/functions.internal.php
w3c https://www.w3school.com.cn/php/php_ref_array.asp