Blogger Information
Blog 64
fans 6
comment 2
visits 82997
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php函数的类型,参数和返回值
王娇
Original
605 people have browsed it

课后总结

  • 知道了可变函数和匿名函数的概念
  • 函数的返回值还可以通过数组,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代码执行效果图

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:编程语言总在不断的发展, php也越来越借鉴其它编程语言中的精华
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post