Correcting teacher:PHPz
Correction status:qualified
Teacher's comments:
<?php
// 变量
$username = '李老师';
echo $username . '<br>';
$username = '猪老师';
echo $username . '<hr>';
// 函数
// 1.声明与js是一样的,但是可以限定参数与返回值的类型,
function getUsername(string $username) : string {
return 'hello' . $username;
}
// 2.调用,与js一样
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>';
// 在js中,有模板字面量,可以使用插值表达式,变量,函数
// 在php中,也有类似的模板,不过有两个限制
// 1.必须使用双引号
// 2.只能解析变量
echo "总金额 getTotal(68.5 , 5) 元<br>";
// 声明一个匿名函数/函数表达式
$getTotal = function (float $price , int $num = 1):float {
return $price * $num ;
};
// 应该告诉模板,这是一个变量,要一个界定标准,边界{}
echo "总金额 {$getTotal(68.5 , 20)} 元<br>";
// 4.参数过多,js可以使用...rest
// php使用array_reduce
$num = function(...$args) {
return array_reduce($args,function($acc , $cur) {
return $acc + $cur;
},0);
};
echo $num(3,4,5,6,7);
// 5.返回值
// return 默认返回单值
// 返回多值: 数组/对象
$arr = [20,30,2,35,64,57];
function getItems(array $arr, $value) :array
{
// 在js中,外部变量自动穿透到内部,闭包
// 在php回调方法中,使用外部变量,必须用use声明
return array_filter($arr,function($item) use($value){
return $item > $value;
});
}
print_r(getItems($arr,20));