博客列表 >php函数的类型,参数和返回值

php函数的类型,参数和返回值

王娇
王娇原创
2020年04月21日 18:18:17600浏览

课后总结

  • 知道了可变函数和匿名函数的概念
  • 函数的返回值还可以通过数组,json,和字符串序列化后返回,但是本质上只是一个返回值
  • 函数参数可以设置默认值,就是可选参数,可选参数必须写在必选参数后
  • 知道了函数中剩余参数的概念,如果函数的参数非常多,并且不确定个数,可以使用剩余参数的概念。

  • php示例代码
    ```php
    <?php
    // 1.函数类型
    //a.自定义函数
    // 输入分数后获得分数所在的级别
    function level(float $score):string{

    1. $level='';
    2. if($score >= 90):
    3. $level = '优秀';
    4. elseif($score >= 80):
    5. $level = '良好';
    6. elseif($score >= 70):
    7. $level = '一般';
    8. elseif($score >= 60):
    9. $level = '合格';
    10. else:
    11. $level = '不合格';
    12. endif;
    13. return $level;//函数中有return是显示返回,return后的语句不执行
    14. 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关键字包含后就可使用

    1. $level = '';
    2. $name = 'peter';
    3. if($score >= 90):
    4. $level = '优秀';
    5. elseif($score >= 80):
    6. $level = '良好';
    7. elseif($score >= 70):
    8. $level = '一般';
    9. elseif($score >= 60):
    10. $level = '合格';
    11. else:
    12. $level = '不合格';
    13. endif;
    14. echo $name,'的分数为:',$level;//函数中没有return属于隐式返回,遇到“}”后自动返回

    };
    echo $level(75.5);
    echo ‘<hr>‘;
    //2.函数返回值
    //a.单值返回
    function stuInfo():string{

    1. $name = 'angle';
    2. return $name; //返回值为一个单值

    }
    echo ‘学员信息:’,stuInfo(),’<br>‘;
    //b.字符串拼接返回
    function stuInfo1():string{

    1. $name = 'angle';
    2. $sex = 'male';
    3. $age = '32';
    4. $iswork = true;
    5. return $name.$sex.$age.$iswork; //返回值为多个值拼接为一个字符串返回,不推荐,不好处理

    }
    echo ‘学员信息:’,stuInfo1(),’<br>‘;
    //c.数组返回
    function stuInfo2():array{

    1. $stu =[
    2. 'name' => 'angle',//键值对,name为字段名,angle为字段的值
    3. 'sex' => 'male',
    4. 'age' => 32,
    5. 'iswork' => true];
    6. 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{

    1. $stu =[
    2. 'name' => 'angle',//键值对,name为字段名,angle为字段的值
    3. 'sex' => 'male',
    4. 'age' => 32,
    5. 'iswork' => true];
    6. 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{

    1. $stu =[
    2. 'name' => 'angle',//键值对,name为字段名,angle为字段的值
    3. 'sex' => 'male',
    4. 'age' => 32,
    5. 'iswork' => true];
    6. 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>‘;

  1. }
  2. printStu('anlge',32,'女');
  3. printStu('peter',15,'男',0);
  4. //d.剩余参数
  5. //计算全班同学的分数总和
  6. function totalScore(...$score):float//形参中加'...'参数整合,就是把离散的参数值整合到参数列表中
  7. {
  8. $sum = 0;
  9. $num = func_num_args();//func_num_args()返回参数列表中参数的个数
  10. for($i=0;$i<$num;$i++):
  11. $sum+=func_get_arg($i);//func_get_arg($i)返回参数列表中参数的值
  12. endfor;
  13. return $sum;
  14. }
  15. $score = [78,76,86,99,96,97];
  16. $totalSum = totalScore(...$score);//实参中加'...'参数离散,就是把数组中的值打散后传递给函数
  17. echo '班级总分为:',$totalSum,'<br>';
  18. //计算全班同学的平均分,用foreach遍历参数列表
  19. function averScore(...$score):int//形参中加'...'参数整合,就是把离散的参数值整合到参数列表中
  20. {
  21. $sum = 0;
  22. $num = func_num_args();//func_num_args()返回参数列表中参数的个数
  23. foreach(func_get_args() as $value)://func_get_args()返回参数列表中所有参数的值
  24. $sum += $value;
  25. endforeach;
  26. return $sum/$num;
  27. }
  28. $score = [78,76,86,99,96,97];
  29. $averScore = averScore(...$score);//实参中加'...'参数离散,就是把数组中的值打散后传递给函数
  30. 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;
?>
```

  • php代码执行效果图

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议