Blogger Information
Blog 9
fans 0
comment 0
visits 7968
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
对PHP函数定义、传值以及返回值的深入
若是梦终会醒
Original
980 people have browsed it

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. 了解匿名函数的使用方式;
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:案例不错
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