博客列表 >对PHP函数定义、传值以及返回值的深入

对PHP函数定义、传值以及返回值的深入

若是梦终会醒
若是梦终会醒原创
2020年04月21日 23:35:12974浏览

PHP函数的应用

使用函数的优越性如下:

  • 提高程序的重用性

  • 提高软件的可维护性

  • 提高软件的开发效率

  • 提高软件的可靠性

  • 控制程序设计的复杂性

1 函数类型

1.1 自定义函数

在PHP中一个自定义函数基本格式如下:

  1. function 函数名([参数1,参数2,参数3,n]) //函数头
  2. { //函数开始的花括号
  3. 函数体; //任何有效的PHP代码都可以作为函数体使用
  4. return 返回值; //可以从函数中返回一个值
  5. } //函数体结束的花括号

动态生成表格的自定义函数

  1. function table(): string //自定义一个表格函数名 指定返回类型为字符串型
  2. {
  3. $table = '<table border="1" width="600" align="center" style="color:#fff">';
  4. $table .= '<tbody>';
  5. for ($i = 0; $i < 5; $i++) : //行
  6. $table .= "<tr>";
  7. for ($j = 0; $j < 5; $j++) : //列
  8. $bgc = ($j + $i * 5) % 2 === 0 ? 'pink' : 'purple';
  9. $table .= "<td bgcolor='{$bgc}'>" . ($j + $i * 5) . "</td>";
  10. endfor;
  11. $table .= '</tr>';
  12. endfor;
  13. $table .= '</tbody>';
  14. $table .= '</table>';
  15. return $table; //返回结果
  16. }
  17. echo table(); //调用函数

效果图

小结:

自定义函数的编写时,首先明白自己希望函数做什么,知道这点开始编写 最好从结构开始写

定义函数->是否调用->返回类型->return $**;->内容主体->主体在大包小 的写成一个完整的自定义函数

1.2 系统函数

  1. $parm = ['id' => 1, 'user' => 'root', 'possword' => '', 'role' => 1, 'status' => 1, 'icon' => '', 'level' => '1'];
  2. function checkPwd(array $agrs): array
  3. {
  4. if ($agrs['possword'] === '') : //判断密码是否为空
  5. unset($agrs['possword']); //系统函数销毁possword
  6. endif;
  7. return $agrs;
  8. }
  9. echo '<pre>';
  10. print_r(checkPwd($parm)); //系统函数打印
  11. echo '</pre>';

效果图:

小结:

系统函数就是php自己库里已有的函数库中的一些函数;

1.3 可变函数

  1. function product(int $a, int $b): int
  2. {
  3. $res = $a * $b;
  4. return $res;
  5. }
  6. function sum(int $a, int $b): int
  7. {
  8. $res = $a + $b;
  9. return $res;
  10. }
  11. $fun='product';
  12. echo $fun(3,3).'<hr>';//9
  13. $fun='sum';
  14. echo $fun(3,3).'<hr>';//6

小结:

如果一个变量名后面有括号,PHP将寻找与该变量值同名的函数,并且尝试执行它。

1. 4 匿名函数

  1. $sum = function (int $a): int {
  2. $res=0;
  3. for ($i = 1; $i < $a; $i++) :
  4. $res += $i;
  5. endfor;
  6. return $res;
  7. };
  8. echo $sum(100);//4950

小结:

匿名函数:允许零时创建一个没有指定名称的函数。

2 返回值

2.1 字符创拼接

  1. function strPj(int $i ,int $e):string
  2. {
  3. $income=$i;
  4. $expend=$e;
  5. $sum=$income-$expend;
  6. $info1='今日支出';
  7. $info2='今日收入';
  8. $sum>=0? $info3='今日赚取':$info3='今日亏损';
  9. return $info1.$expend.$info2.$income.$info3.abs($sum).'&nbsp;还要继续努力哟!'.'<br>';
  10. }
  11. echo strPj(1000,500);
  12. echo strPj(2000,5000);
  13. echo strPj(3000,500);

效果图:

2.2 返回数组类型

  1. function arr():array
  2. {
  3. $arr=['user'=>'张三','job'=>'前端开发人员','money'=>10000,'add_time'=>48,'jiangjin'=>5000,'salary'=>15000];
  4. return $arr;
  5. }
  6. $res = print_r(arr(), true);
  7. printf('<pre>%s</pre>', $res);
  8. echo '<hr>';
  9. echo arr()['salary']>12000?'您的工资太高了需要上税':null;

效果图:

2.3 返回json 类型

  1. function json():string
  2. {
  3. $name = $_POST['username'] ?? null;
  4. if ($name===null) :
  5. $arr = ['code' => 1, 'msg' => '用户名为空', 'data' => ''];
  6. $json=json_encode($arr, JSON_UNESCAPED_UNICODE);
  7. endif;
  8. return $json;
  9. }
  10. echo json();//{"code":1, "msg":"用户名为空","date":""}

2.4 序列化: 字符串

  1. function json():string
  2. {
  3. $name = $_POST['username'] ?? null;
  4. if ($name===null) :
  5. $arr = ['code' => 1, 'msg' => '用户名为空', 'data' => ''];
  6. $json=serialize($arr);
  7. endif;
  8. return $json;
  9. }
  10. echo json();//a:3:{s:4:"code";i:1;s:3:"msg";s:15:"用户名为空";s:4:"data";s:0:"";}

3 函数参数

3.1 值传参

  1. $val='今天在家住';
  2. function qinrenjie(string $agr): string
  3. {
  4. return $agr='今天情人节当然去宾馆住呀';
  5. }
  6. echo qinrenjie($val);//今天情人节当然去宾馆住呀
  7. echo '<hr>';
  8. echo $val;//今天在家住

小结:

值传参 因为作用域的关系 $val就变成2个地址 所以值不一样

3.2 引用传参

  1. $val = '今天在家住';
  2. function qinrenjie(string &$agr): string
  3. {
  4. return $agr = '只要身体好天天在家过情人节!';
  5. }
  6. echo qinrenjie($val);//只要身体好天天在家过情人节!
  7. echo '<hr>';
  8. echo $val;//只要身体好天天在家过情人节!

小结:

引用传参用& 的符把他们的地址指向了同一个地址 所以会跟着变化;

3.3 默认值传参

  1. $name = '小猪';
  2. $level = 8;
  3. function checkLevel(string $name, int $level = 0): string
  4. {
  5. if ($level === 0) :
  6. $res = '很抱歉,您还不是会员,本店只对会员开放<br>';
  7. elseif ($level > 0 && $level < 8) :
  8. $res = "欢迎您{$name},v{$level}会员,这里是小皮机器人,人工服务请转0<br>";
  9. elseif ($level >= 8) :
  10. $res = "欢迎您{$name},您是亮瞎氪金狗眼的钻石v{$level}会员,客服将第一时间为您服务<br>";
  11. endif;
  12. return $res;
  13. }
  14. echo checkLevel($name); //很抱歉,您还不是会员,本店只对会员开放
  15. echo checkLevel($name, $level);//欢迎您小猪,您是亮瞎氪金狗眼的钻石v8会员,客服将第一时间为您服务
  16. echo checkLevel($name, 4);//欢迎您小猪,v4会员,这里是小皮机器人,人工服务请转0

3.4剩余参数

  1. function fun($name,$age,...$more) {
  2. echo '姓名:'.$name,'<br>';
  3. echo '年龄:'.$age,'<br>';
  4. print_r($more);
  5. echo '<hr>';
  6. }
  7. fun('许先生',24,'php','6000-8000','764210593');

总结

  1. 理解函数的作用;
  2. 掌握自定义函数的定义;
  3. 理解形参的工作原理以及作用;
  4. 了解参数默认值的工作原理;
  5. 了解强类型形参的作用;
  6. 理解返回值return在函数中的实际含义;
  7. 了解强类型返回值的作用;
  8. 掌握函数的调用;
  9. 掌握可变函数的使用方式;
  10. 了解匿名函数的使用方式;
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议