登录  /  注册
博主信息
博文 33
粉丝 1
评论 0
访问量 20694
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
总结函数的返回值,参数 2. 实例演绎你对课上回调函数,匿名函数的理解?
冰雪琉璃
原创
522人浏览过

函数的返回值,参数

1.语法

  1. function 函数名称([参数类型限定 参数列表]):返回值类型的限定
  2. {
  3. return 返回值;
  4. //注意函数体只能返回单个的值,返回值的类型是任意的类型的。
  5. echo 'hello';//不会执行因为执行了return。
  6. }
  7. function text(int $a,float $b):int{
  8. return $a+$b;
  9. }
  10. echo($res=text(12, 12.3));//24
  11. function text(int $a,float $b):int{
  12. return $a+$b;
  13. echo 'helloworld';//不会执行
  14. }
  15. echo($res=text(12, 12.3));//24
  16. //数组返回
  17. function demo1():array{
  18. return ['status'=>1,'msg'=>'验证成功'];
  19. }
  20. $res=demo1();
  21. echo $res['status']===1?$res['msg']:'验证失败';
  22. //对象返回
  23. function demo2():object
  24. {
  25. //匿名类
  26. return new class(){
  27. public $name="admin";
  28. public $email="12323@qq.com";
  29. };
  30. }
  31. $user=demo2();
  32. var_dump($user);
  33. //对象成员的访问 ->
  34. echo $user->name;
  35. echo $user->email;
  36. //转为json格式的字符串返回
  37. function demo3():string
  38. {
  39. return json_encode(['status'=>1,''sg'=>'验证成功'],
  40. JSON_UNESCAPEO_UNICODE);
  41. }
  42. $json_str=demo3();
  43. echo $json_str;//{"status":1,"msg":"验证成功"}
  44. //需要将json字符串解析,json_decode()还原成php能够处理的数据类型
  45. $res=json_decode($json_str,true);
  46. var_dump($res);//json object
  47. //也可以使用数组方式给定第二个参数
  48. $res=json_decode($json_str,true);
  49. var_dump($res);//array
  50. //以序列化字符串返回
  51. function demo4(){
  52. return serialize(['status'=>1,'msg'=>'登陆成功','code'=>254]);
  53. }
  54. $res=demo4();
  55. var_dump($res);

//循环实现表格

  1. $table="<table border='1' cellspacing='0'>";
  2. for($i=0;$i<3;$i++){
  3. //外层循环控制表格的行
  4. $table.="<tr>";
  5. //内层循环控制表格的列
  6. for($j=0; $j<2; $j++){
  7. $table .="</td>中国</td>";
  8. }
  9. $table .="</tr>";
  10. }
  11. $table.="</table>";
  12. echo $table;
##通过用函数打包将上面代码以参数形式实现一个三行两列的表格
  1. //函数的参数多个参数用逗号隔开
  2. function createTable(int $rows,int $colunms){
  3. $table="<table border='1' cellspacing='0'>";
  4. for($i=0;$i<$rows;$i++){
  5. //外层循环控制表格的行
  6. $table.="<tr>";
  7. //内层循环控制表格的列
  8. for($j=0; $j<$colunms; $j++){
  9. $table .="</td>中国</td>";
  10. }
  11. $table .="</tr>";
  12. }
  13. $table.="</table>";
  14. return $table;
  15. }
  16. echo createTable(2,3);
##通过用函数打包将上面代码以参数形式实现一个三行四列并且颜色是红色内容是为发的表格
  1. //默认传入的参数$bgColor="pink",$content="我".
  2. function createTable(int $rows,int $colunms,string $bgColor="pink",string $content="我"){
  3. $table="<table border='1' cellspacing='0' bgColor='{$bgColor}'>";
  4. for($i=0;$i<$rows;$i++){
  5. //外层循环控制表格的行
  6. $table.="<tr>";
  7. //内层循环控制表格的列
  8. for($j=0; $j<$colunms; $j++){
  9. $table .="</td>{$content}</td>";
  10. }
  11. $table .="</tr>";
  12. }
  13. $table.="</table>";
  14. return $table;
  15. }
  16. echo
  17. //用户相应传入的参数。
  18. createTable(3,4,'red','发');
总结函数的返回值,参数
  • 当函数在调用时不传参数或者少传参数的时都会使用默认值,如果用户传了参数会方式覆盖默认参数的现象,而且在传参数时要根据函数变量依次传入,否则会出错。
  • 参数是从左边向右边取值。
  • 函数调用时必选参数必须是实际参数。
    实例演绎回调函数,匿名函数的理解
    1. //引用参数
    2. function ref(&$arg){
    3. return $arg*=2;
    4. }
    5. $val=20;
    6. echo ref($val);//40
    7. echo $val;//40
    8. //结论:
    9. $val的内存储存区块相对地址导入到函数中了,在函数里面发生的任何变化,都会对父程序造成影响。
    1. //剩余参数适用于参数不固定
    2. //剩余参数用在参数列表中合并
    3. function add($a,$b,$c,$d){
    4. return $a+$b+$c+$;
    5. }
    6. add(1,2,3,6);
    7. //剩余参数用在函数的调用表达式中展开
    8. function test(...$arg){
    9. //array_sum()计算数组的和
    10. return array_sum($arg);
    11. $arr=[1,2,3,4,5];
    12. echo test(...$arr);//15
    1. //命名函数
    2. echo demo("小明");//小明
    3. function demo($name){
    4. return $name;
    5. }
    6. echo demo("小明");//小明
    7. //匿名函数
    8. echo $func("小红");匿名函数不能提前调用
    9. $func=function(){
    10. echo $name;
    11. }
    12. echo $func("小红");//小红
    13. //匿名函数通过use可以访问函数外部的自由变量。
    14. $userName="admin";
    15. $email="1232@qq.com";
    16. $text=function()use($userName,$email){
    17. return sprintf($userName,$email);
    18. };
    19. //匿名函数的调用
    20. echo $text();//admin,1232@qq.com
    21. $text=function($myName,$myEmail)use($userName,$email){
    22. $name=$myName;
    23. $email=$myEmail;
    24. };
    25. $text('yin','jjkkl@qq.com');
    26. echo $userName//yin

    总结

  • 声明函数属于全局函数全局可以访问
  • 匿名函数有作用域不能在作用域之外访问调用了之后才能访问。
  • 匿名函数允许一个变量来保存
    1. //回调函数:将函数作为函数返回值调用。
    2. function demo1($site){
    3. return function($color)use($site){
    4. return function (){
    5. return spintf('<h1 style="color:red;"></h1>',$color,$site);
    6. };
    7. };
    8. }
    9. //调用demo1
    10. $res=demo1("php.cn");
    11. //调用demo1里面的参数
    12. echo $res('red');
批改老师:灭绝师太灭绝师太

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学