博客列表 >php学习第四章 函数的语法、类型、返回值、参数

php学习第四章 函数的语法、类型、返回值、参数

王小飞
王小飞原创
2020年04月21日 16:32:16740浏览

函数语法

1,自定义函数

  1. // 函数语法
  2. //function 创建一个函数chengfa float为小数
  3. function chengfa(float $a, float $b, float $c) : float
  4. {
  5. return $a * $b + $c;
  6. // 隐式: 结束大括号的时候会自动返回
  7. }
  8. // 函数调用: 按名称
  9. echo chengfa(10.8, 10.1,10);
  10. echo '<hr>';
  11. //自定义函数
  12. // 命名函数yue计算总账户总余额
  13. function yue(float $xianjin, float $yinhangka , $zhifub) : float
  14. {
  15. //隐式 现金+银行卡+支付宝
  16. return $xianjin + $yinhangka + $zhifub;
  17. }
  18. //现金50+银行卡500+支付宝500
  19. echo '账户总余额: ' . yue(50, 500,500);
  20. echo '<hr>';

2.系统函数,系统自带函数 可以直接调用

  1. $str = '系统预制函数,如mb_substr 截取前*位';
  2. // 仅获取前5个字符
  3. echo mb_substr($str, 0, 8);
  4. echo '<hr>';

3.可变函数,将变量的值为函数然后调用

  1. // 将函数名称放到变量里面
  2. $xiaofei = 'yue';
  3. echo '小飞的账户总余额: ' . $xiaofei(8000, 80000,80000);
  4. echo '<hr>';

4.4,匿名函数, 闭包, 可以访问父作用域的变量

  1. // 4. 匿名函数: 闭包, 可以访问父作用域的变量
  2. // 这是个全局函数 代金券
  3. $daijinquan = 500;
  4. //$daijinquan 的作用域是全局 价格 数量 use是访问全局变量
  5. $zongjine = function (float $money, int $num) use ($daijinquan) : float
  6. {
  7. // 当前价格:加钱+数量
  8. $amount = $money * $num;
  9. // 大于=2000元 可以用500元代金券 否则原价
  10. return $amount >= 2000 ? $amount - $daijinquan : $amount;
  11. };
  12. echo '优惠后金额: ' . $zongjine(200, 20) . ' 优惠: '.$daijinquan . '元';
  13. echo '<hr>';

函数多值返回的四种形式

1.字符串拼装

  1. function demo1() : string
  2. {
  3. $yinhangka = 10;
  4. $zhifubao = 100;
  5. $huanhang ='<br>';
  6. return '银行卡余额: '.$yinhangka .$huanhang .'支付宝余额: ' . $zhifubao;
  7. }
  8. echo demo1();
  9. echo '<hr>';

2.通过数组

  1. function zhanghuyu() : array
  2. {
  3. return ['status'=>10, 'message'=>100];
  4. }
  5. $zhanghu = print_r(zhanghuyu(), true);
  6. printf('<pre>%s</pre>', $zhanghu);
  7. echo zhanghuyu()['status'] == 5 ? '<span style="color:green">'.zhanghuyu()['message']. '</span>' : '支付宝余额不足';
  8. echo '<hr>';

3. 通过JSON返回

  1. function yiyouzhang() : string
  2. {
  3. // json_encode(): 将php数据编码为json格式的字符串返回
  4. return json_encode(['status'=>'银行卡', 'message'=>'支付宝']);
  5. }
  6. $data = yiyouzhang();
  7. echo $data;
  8. echo '<hr>';
  9. // 将json格式的字符串还原/解析为php对象/数组
  10. $var = json_decode($data, true);
  11. print_r($var);
  12. echo '<hr>';

4. 通过序列化返回多个值

  1. function yiyouzhan($a,$b)
  2. {
  3. //将要返回的结果装入数组中
  4. $c=['zhanghua'=>$a,'zhanghub'=>$b];
  5. //将数组转换为序列化字符串返回
  6. return serialize($c);
  7. }
  8. //运行函数
  9. $zahnghu= yiyouzhan('银行卡','支付宝');
  10. //显示结果
  11. echo $zahnghu.'<br>';
  12. //将序列化的结果转换为数组
  13. echo '<pre>'. print_r (unserialize($zahnghu),true).'<pre><hr>';

函数的四种参数

1. 值参数, 默认

  1. function qiuhe($a,$b)
  2. {
  3. return $a+$b;
  4. }
  5. echo qiuhe(10,10).'<hr>';

2. 引用传递,调用参数

  1. $c=200;
  2. //将第二个参数设置成引用参数
  3. function qiuhe2($a,&$b)
  4. {
  5. return $b+=$a;
  6. }
  7. //将$c传入到第二个参数
  8. qiuhe2(50,$c);
  9. //显示$c的值,这时$c的值已经改变为250
  10. echo $c.'<hr>';

3. 默认参数

  1. //将$c设置为默认参数初始值为200
  2. function qiuhe3($a,$b,$c=200)
  3. {
  4. return $a+$b+$c;
  5. }
  6. //当qiuhe3的第三个参数未设置时$c的值为200,所以结果为203
  7. echo qiuhe3(1,2).'<br>';
  8. //也可设置默认参数的值,此时$c的值为100,所以结果为103
  9. echo qiuhe3(1,2,100).'<hr>';

4.,剩余参数

  1. //第一种方法
  2. function qiuhe4()
  3. { //获取传入参数所组成的数组
  4. $arr=func_get_args();
  5. //遍历数组求和
  6. foreach ($arr as $key => $value) {
  7. $result+=$value;
  8. }
  9. //返回参数的总和
  10. return $result;
  11. }
  12. //qiuhe4可以传入任意数量的参数
  13. echo qiuhe4(1,2,3,4,500).'<br>';
  14. //第二种方法
  15. $arr=[1,2,3,4,500];
  16. //'...'将传入的参数打包成数组
  17. function qiuhe5(...$arr)
  18. {
  19. return array_sum($arr);
  20. }
  21. //'...'可以将数组转换为普通格式
  22. echo qiuhe5(...$arr).'<br>';
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议