函数相关代码练习
<?php
// 自定义函数
function func1(float $a,float $b):float
{
return $a*$b;
}
echo func1(3,2);
echo '<hr>';
// 系统函数
$str='woshizhongguoren';
var_dump(mb_strlen($str));
echo '<br>';
var_dump(mb_substr($str,5,8));
echo '<hr>';
$str='我是中国人,在河南郑州';
var_dump(mb_strlen($str));
echo '<br>';
var_dump(mb_substr($str,3,4));
// 可变函数
echo '<hr>';
$function='func1';
echo $function(4,5);
echo '<hr>';
// 匿名函数:闭包,可访问父作用域(需要通过use导入),普通函数不行
$num=2;
$f=function ($dis) use($num){
return $num*$dis;
};
echo $f(2).'<br>';
echo gettype($f(2)).'<br>';
echo @<<< "EOT"
匿名函数:闭包,可访问父作用域(需要通过use导入),普通函数不行<br>
不正确的:
<pre>
function sum(float $a) use($num){
return $a*$num
}</pre>
EOT;
echo '<hr';
// 函数返回值
// 函数返回字符串:拼装
function str_link():string
{
$a='woshi';
$b='zhongguoren';
return $a.'&'.$b;
}
echo str_link(),'<br>';
// 返回数组
function get_array():array
{
return ['status'=>1,'message'=>'成功'];
}
print_r(get_array());
// 返回json对象
function get_arr():string
{
return json_encode(['status'=>1,'message'=>'成功']);
}
echo get_arr(),'<br>';
$arra=get_arr();
print_r(json_decode($arra));
echo '<br>';
print_r(json_decode($arra,true));
echo '<hr>';
// 返回序列化
function get_ar():string
{
return serialize(['status'=>1,'message'=>'成功']);
}
echo get_ar();
echo '<br>';
print_r(unserialize(get_ar()));
// 函数参数
$ab=23;
// 如果在参数前面使用了取地址符,则会改变原始调用参数的值
function get_float(float &$a):float
{
return $a*=2;
}
echo get_float($ab),'<br>';
echo $ab,'<br>';
//默认参数必须写在必选参数的后面
function get_sum(float $a,float $b=2):float
{
return $a+$b;
}
echo get_sum(3),'<br>';
echo get_sum(3,6),'<br>';
function get_s(...$arr):float
{
return array_sum($arr);
}
echo get_s(1,2,3,4,5,10),'<br>';
function get_p(...$arr):float
{
return array_product($arr);
}
echo get_p(1,2,3,4);
代码演示结果:
知识点总结:
1、函数命名:小驼峰法:getSum
;蛇形命名法:get_sum
;
2、匿名函数:又称闭包,可以通过use
访问父级变量;
3、函数返回值:单值返回
- 字符串拼装
- 数组
- JSON字符串:
json_encode();
- 序列化: 字符串
serialize();
4、函数参数
- 值参数:在函数中改变了调用参数的值,但原始调用参数并没有发生变化
- 引用参数(只能形参使用,实参不能使用
&
):如果在参数前面使用了取地址符,则会改变原始调用参数的值 - 默认参数:默认参数必须写在必选参数的后面
- 剩余参数:
...
用在函数的形式参数列表中,表示”收集”,将多个离散的参数打包到一个数组中处理;用在函数的调用参数列表中,表示”展开”,还原将一个数组展开成一个个离散的值.