批改状态:合格
老师批语:编程语言总在不断的发展, php也越来越借鉴其它编程语言中的精华
知道了函数中剩余参数的概念,如果函数的参数非常多,并且不确定个数,可以使用剩余参数的概念。
php示例代码
```php
<?php
// 1.函数类型
//a.自定义函数
// 输入分数后获得分数所在的级别
function level(float $score):string{
$level='';if($score >= 90):$level = '优秀';elseif($score >= 80):$level = '良好';elseif($score >= 70):$level = '一般';elseif($score >= 60):$level = '合格';else:$level = '不合格';endif;return $level;//函数中有return是显示返回,return后的语句不执行echo '哈哈,看不到我';
}
$level = level(95);
echo ‘angle的分数为:’.$level,’<br>‘;
//b.系统函数
$date = date(‘Y-m-d H:i:s’);
echo ‘今天的日期为:’,$date,’<br>‘;
//c.可变函数
// 函数名称存储在一个变量内,调用时可直接使用变量名称+参数进行调用
$funName = ‘level’;
echo ‘hugn的分数为:’,$funName(88.5),’<br>‘;
//d.匿名函数
$name = ‘angle’;
//匿名函数也就闭包,就是创建一个没有固定函数名称的函数,把此函数按表达式一样赋值给变量
$level = function (float $score) use($name):void{//如果想在函数中引用父作用域中的变量,使用use关键字包含后就可使用
$level = '';$name = 'peter';if($score >= 90):$level = '优秀';elseif($score >= 80):$level = '良好';elseif($score >= 70):$level = '一般';elseif($score >= 60):$level = '合格';else:$level = '不合格';endif;echo $name,'的分数为:',$level;//函数中没有return属于隐式返回,遇到“}”后自动返回
};
echo $level(75.5);
echo ‘<hr>‘;
//2.函数返回值
//a.单值返回
function stuInfo():string{
$name = 'angle';return $name; //返回值为一个单值
}
echo ‘学员信息:’,stuInfo(),’<br>‘;
//b.字符串拼接返回
function stuInfo1():string{
$name = 'angle';$sex = 'male';$age = '32';$iswork = true;return $name.$sex.$age.$iswork; //返回值为多个值拼接为一个字符串返回,不推荐,不好处理
}
echo ‘学员信息:’,stuInfo1(),’<br>‘;
//c.数组返回
function stuInfo2():array{
$stu =['name' => 'angle',//键值对,name为字段名,angle为字段的值'sex' => 'male','age' => 32,'iswork' => true];return $stu; //返回值为1个数组
}
$stuinfo = print_r(stuInfo2(),true);//print_r第二个参数为true时,返回一个string字符串
echo ‘学员信息:’,printf(‘<pre>%s</pre>‘,$stuinfo),’<br>‘;//printf为格式化输出%s为字符串占位符
//d.json字符串返回 同样的json返回比数组返回数据量少
function stuInfo3():string{
$stu =['name' => 'angle',//键值对,name为字段名,angle为字段的值'sex' => 'male','age' => 32,'iswork' => true];return json_encode($stu); //返回值为1个json字符串
}
// $stuinfo = print_r(json_decode(stuInfo3()),true);//json_decode()解析json字符串
$stuinfo = print_r(stuInfo3(),true);
echo ‘学员信息:’,printf(‘<pre>%s</pre>‘,$stuinfo),’<br>‘;//printf为格式化输出%s为字符串占位符
//e.字符串序列化后返回
function stuInfo4():string{
$stu =['name' => 'angle',//键值对,name为字段名,angle为字段的值'sex' => 'male','age' => 32,'iswork' => true];return serialize($stu);; //返回值为1个序列化后的字符串
}
// $stuinfo = print_r(unserialize(stuInfo4()),true);//unserialize()反序列化字符串
$stuinfo = print_r(stuInfo4(),true);
echo ‘学员信息:’,printf(‘<pre>%s</pre>‘,$stuinfo),’<br>‘;//printf为格式化输出%s为字符串占位符
echo ‘<hr>‘;
//3.函数参数
//a.默认参数传递为值传递
function square(float $val):float{
$val = $val;
return $val;
}
$value = 4;
echo $value,’的平方是:’,square($value),’<br>‘;//函数参数默认是值传递
//b.引用传递
function square1(float &$val):float{//在形参前加‘&’符后变成引用传递
$val = $val;
return $val;
}
$value = 4;
echo $value,’的平方是:’,square1($value);//函数参数默认是值传递
echo ‘value=’,$value,’<br>‘;
//c.默认参数
//iswork为可选参数,可选参数必须写在必选参数的后面
function printStu(string $name,int $age,string $sex,int $iswork = 1)//iswork的默认值为1
{
echo ‘*学员信息**<br>‘;
echo ‘姓名:’,$name,’<br>‘;
echo ‘年龄:’,$age,’<br>‘;
echo ‘性别:’,$sex,’<br>‘;
echo ‘是否在职:’,$iswork ?’在职’:’在校’,’<br>‘;
}printStu('anlge',32,'女');printStu('peter',15,'男',0);//d.剩余参数//计算全班同学的分数总和function totalScore(...$score):float//形参中加'...'参数整合,就是把离散的参数值整合到参数列表中{$sum = 0;$num = func_num_args();//func_num_args()返回参数列表中参数的个数for($i=0;$i<$num;$i++):$sum+=func_get_arg($i);//func_get_arg($i)返回参数列表中参数的值endfor;return $sum;}$score = [78,76,86,99,96,97];$totalSum = totalScore(...$score);//实参中加'...'参数离散,就是把数组中的值打散后传递给函数echo '班级总分为:',$totalSum,'<br>';//计算全班同学的平均分,用foreach遍历参数列表function averScore(...$score):int//形参中加'...'参数整合,就是把离散的参数值整合到参数列表中{$sum = 0;$num = func_num_args();//func_num_args()返回参数列表中参数的个数foreach(func_get_args() as $value)://func_get_args()返回参数列表中所有参数的值$sum += $value;endforeach;return $sum/$num;}$score = [78,76,86,99,96,97];$averScore = averScore(...$score);//实参中加'...'参数离散,就是把数组中的值打散后传递给函数echo '班级平均分为:',$averScore,'<br>';
//数组解包
$student[]=[‘001’,’angle’,520.5];
$student[]=[‘002’,’hugn’,556.5];
$student[]=[‘003’,’peter’,523];
$student[]=[‘004’,’Eric’,580];
echo ‘05级学员入学分数<br>‘;
foreach($student as list($id,$name,$score)):
printf(‘编号:%s 姓名:%s 分数:%s <br>‘,$id,$name,$score);
endforeach;
?>
```


Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号