一、函数的声明
//函数的声明
function Sum(int $a ,int $b):int
{
return $a *$b;
};
//函数的调用
echo Sum(1,2) ,'<hr>';
二、函数的类型
1.自定义函数
function getCount(float $a,float $b):float
{
return $a+$b;
}
echo getCount(1.5,4.5),'<hr>';
2.系统内置函数
$str="函数调用机制,改进函数调用机制,通过优化参数传递环节,减少一些指令";
//字符串截取 一个中文字符相当于三个字节
echo substr($str,0,6),'<hr>';
3.可变函数
$name='getCount'; //getCount()是上面自定义函数
echo $name(1,2),'<hr>';
4.匿名函数
$p =function(float $a,float $b){
return $a+$b;
};
//匿名函数在'php'中也成为'闭包':可访问父作用域中的变量
$c=10;
$p =function(float $a,float $b) use ($c){
return ($a+$b)*$c;
};
echo $p(1.2,3.3),'<hr>';
//两个匿名函数嵌套
$f=function(int $c){
$p =function(float $a,float $b) use ($c) {
return ($a+$b)*$c;
};
//返回函数
return $p;
};
//调用
echo $f(10)(1,2),'<hr>';
5.回调函数
// array_map() 映射 将传入的数组根据函数进行处理并返回
// 第一个参数是函数 第二个参数是需要异步处理的数组
$arr=array_map(function($item){
if( $item %2 ===0){ //求数组的偶数
return $item;
}
},$data);
var_dump($arr);
//过滤掉array_map()处理的NULL值
$arr_1=array_filter($arr,function($item){
if(!empty($item)) return $item;
});
var_dump($arr_1);
//将数组键值重新排列 array_values($arr)
var_dump(array_values($arr_1));
三、函数的返回值
1.字符串拼接
function demo01():string
{
$s='1';
$m='成功';
return $s.'<span style="color:red">'.$m.'</span>'.'<hr>';
}
echo demo01();
2.数组
//通过数组的方式返回
function demo02():array
{
$arr=array('s'=>'1','m'=>'成功');
return $arr;
}
var_dump(demo02()) ;
3.json数据类型得字符串
// json_encode($array) 将数组转换数据
// json_decode($json,true) json还原成$array 第二个参数不加则返回一个对象
function demo03():string
{
$arr=array('s'=>'1','m'=>'成功');
return json_encode($arr);
}
echo demo03(),'<br>';
// 还原数组
$arr=json_decode(demo03());
var_dump($arr);
echo '<br>';
$arr=json_decode(demo03(),true);
var_dump($arr);
echo '<hr>';
4.序列化方式
// serialize()序列化 unserialize()反序列化
echo serialize(123),'<br>';
echo serialize('123'),'<br>';
echo serialize(true),'<br>';
echo serialize([1,2,3]),'<br>';
function demo04():string
{
$arr=array('s'=>'1','m'=>'成功');
return serialize($arr);
}
echo demo04(),'<br>';
var_dump(unserialize(demo04()));
echo '<hr>';
四、函数的参数
1.值参数
function demo1(float $arg):float
{
return $arg;
}
echo demo1(1).'<hr>';
2.引用参数
function demo2(float &$arg):float
{
return $arg*=2;
}
$val=120;
echo $val.'<br>';
echo demo2($val).'<br>';
echo $val.'<hr>';
3.默认参数
function demo3(int $arg,int $a=10):int
{
return $arg*=$a;
}
echo demo3(10).'<hr>';
4.剩余参数
function demo4(...$args):int
{
return array_sum($args);
}
echo demo4(1,2,3,4,5),'<br>';
echo demo4(1,2,3,4,5,6,7).'<br>';
$arr=[1,2,3,4,5,6,7,8];
$res=demo4(...$arr);
echo $res,'<hr>';
五、命名空间namespace
namespace btn1{
function dmmo(){
return '1234';
}
}
//全局(默认)空间 执行程序的入口
namespace {
function demo(){
};
echo \btn1\dmmo();
}