Correcting teacher:Guanhui
Correction status:qualified
Teacher's comments:写的很好!回调函数暂时不理解,不用太过纠结,后面老师会详细讲的。
//函数声明语法:
// function 函数名称的标识符(参数列表){
// 函数体
// }
函数命名规范:
function show(){}
function _show(){}
< ?php
// 定义函数
function show() {
echo '学习不刻苦,不如卖红薯!';
}
// 调用
show();
?>
用户自己定义的函数
<?php
// 定义函数
function write_msg() {
echo 'hello PHP!';
}
write_msg(); //调用函数
?>
<?php
// 返回不同数的反余弦
echo (acos(0.5) .'<br>');
//返回不同数的绝对值:
echo (abs(5.5) .'<br>');
//返回随机整数。
echo (rand() .'<br>');
?>
<?php
function show($argc) {
echo $argc, '<br>';
}
// 将函数名保存到变量中
$str='show';
$str('学习不刻苦,不如卖红薯!');
?>
匿名函数就是没有名字的函数也叫具名函数和闭包。
<?php
//将一个没有函数名的函数赋值给一个变量
$show=function () {
echo '学习不刻苦,不如卖红薯!';
};
$show();
?>
函数必须要有返回值,且只能返回单一的值,可以通过以下方法返回函数值:
<?php
function demo1(): string
{
$color = '红色';
$fruit = 'apple';
return $color . $fruit;
}
echo demo1();
?>
<?php
function demo1(): array
{
$color = '红色';
$fruit = 'apple';
return ['color'=>$color ,'fruit'=>$fruit];
}
print_r(demo1());
?>
<?php
function demo1(): string
{
$color = '红色';
$fruit = 'apple';
return json_encode(['color'=>$color ,'fruit'=>$fruit]);
}
echo demo1();
print_r(json_decode( demo1(), true));
?>
<?php
function demo1(): string
{
$color = '红色';
$fruit = 'apple';
return serialize(['color'=>$color ,'fruit'=>$fruit]);
}
echo demo1();
print_r(unserialize( demo1()));
默认情况下,参数的传递是值传递
<?php
// 默认参数8
$num=8;
function fun($args) {
$args=88;
}
// 默认参数值传递
fun($num);
echo $num;
引用参数需要在前面加取地址符&
<?php
$num=8;
// 引用参数
function fun(&$args) {
$args=88;
}
fun($num);
echo $num;
<?php
// 有参数的必须写到没有默认参数的后面
function fun($name,$age=30,$address='不确定') {
echo "姓名:{$name}<br>";
echo "年龄:{$age}<br>";
echo "地址:{$address}<br>";
echo '<hr>';
}
fun('老黄');
<?php
// 参数前面加...
function fun($name,$age,...$favorite) {
echo '姓名:'.$name,'<br>';
echo '年龄:'.$age,'<br>';
print_r($favorite);
echo '<hr>';
}
fun('老王',33);
fun('老黄',30,'牛排','北京烤鸭','德州扒鸡');
<?php
$arr = array(1,3,5,7,9);
function fun($num)
{
// 数组中的每个值乘以3
return($num*3);
}
// 将函数作用到数组中的每一个值
print_r(array_map("fun",$arr));
<?php
// 命名空间
namespace ns1 {
function show(){
echo '代码敲烂,月薪过万!';
}
}
// 在全局中访问
namespace {
echo ns1\show();
}
总结:了解的函数的声明和调用。也熟悉了函数类型,就是对函数的使用掌握不是熟练,特别是异步编程中的回调函数不是很明白。