php中函数的基础知识,包括函数的声明、调用、参数、参数不足以及参数过多的情况,还有函数返回值(一个值或多个值)的讲解。
关键词:函数、function、参数、匿名函数、函数表达式、php中的模板、array_reduce、print_r
新建demo.php文件源文件,代码如下:
<?php
// 函数
// 1. 函数的声明,可以限定参数与返回值的类型
function getUsername(string $username): string
{
return 'Hello, ' . $username;
}
// 2. 函数调用
echo getUsername('孙悟空') . '<br>';
// 3. 参数不足: 默认值
function getTotal(float $price, int $num = 1): float
{
return $price * $num;
}
echo '总金额: ' . getTotal(68.5) . ' 元 <br>';
echo '总金额: ' . getTotal(68.5, 5) . ' 元 <br>';
// 在php中的模板,有二个限制
// 1. 必须用双引号声明
// 2. 只解析变量
echo "总金额: getTotal(68.5, 5) 元 <br>";
// 声明一个匿名函数/函数表达式
$getTotal = function (float $price, int $num = 1): float {
return $price * $num;
};
// echo "总金额: $getTotal(68.5, 5) 元 <br>";
// 应该告诉模板,这是一个变量,要一个界定标准,边界
echo "总金额: {$getTotal(68.5, 10)} 元 <br>";
$total = $getTotal(68.5, 10);
echo "总金额: {$total} 元 <br>";
// echo "总金额: ${total} 元 <br>";
// 4. 函数参数过多
$sum = function (float $a, float $b, float $c): float {
return $a + $b + $c;
};
echo $sum(3, 4, 5), '<br>';
echo $sum(3, 4, 5, 6, 7), '<br>';
$sum = function (...$args) {
// print_r($args);
return array_reduce($args, function ($acc, $cur) {
return $acc + $cur;
}, 0);
};
echo $sum(3, 4, 5, 6, 7);
// 5. 返回值
// return : 默认返回单值
// 返回多值: 数组/对象
$arr = [33, 2, 54, 7, 12, 23, 9];
function getItems(array $arr, $value): array
{
// 在php回调方法中,使用外部变量,用use进行声明
return array_filter($arr, function ($item) use ($value) {
return $item > $value;
});
}
print_r(getItems($arr, 20));
运行结果
Hello, 孙悟空
总金额: 68.5 元
总金额: 342.5 元
总金额: getTotal(68.5, 5) 元
总金额: 685 元
总金额: 685 元
12
12
25Array ( [0] => 33 [2] => 54 [5] => 23 )
代码逻辑解析与总结
1、函数的声明非常简单
function getUsername(string $username): string
{
return 'Hello, ' . $username;
}
/* 关键字 函数名(参数类型 变量名称):返回的数据类型
{
函数体....
}*/
2、在函数下面直接使用 函数名(参数)
即可调用;
3、函数在参数不足的情况下会报错 too few ,处理办法是给函数的参数添加默认值;
4、php中的模板需要用 {} 括号括起来才会识别到变量;
5、php中的匿名函数可以赋值给一个变量,然后通过结合模板的特性给这个变量传参来实现php中匿名函数传参,代码如下;
// 声明一个匿名函数/函数表达式
$getTotal = function (float $price, int $num = 1): float {
return $price * $num;
};
// 应该告诉模板,这是一个变量,要一个界定符或边界
echo "总金额: {$getTotal(68.5, 10)} 元 <br>";
6、函数参数过多会自动过滤掉多余的传过来的参数;
7、函数过多可以使用...$args结合array_reduce()内置函数来处理,代码如下;
$sum = function (...$args) {
// print_r($args);
return array_reduce($args, function ($acc, $cur) {
return $acc + $cur;
}, 0);
};
echo $sum(3, 4, 5, 6, 7);
传一个数组到array_reduce()求出这组数组的总和,暂时一知半解,仅供参考。
8、函数可以返回单个值、对象/多个值;
9、在php方法中,使用外部变量,用use进行声明;
总结
- 变量不用声明,直接用
- 使用双号号声明字符串模板中可嵌入变量
- 函数先声明,再调用
- 函数参数不足: 默认值
- 函数参数过多: 剩余参数...rest
- 函数默认单值返回,返回多值请用数组或对象
评论 (0)