Blogger Information
Blog 52
fans 0
comment 3
visits 42408
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php学习第四章 函数的语法、类型、返回值、参数
王小飞
Original
743 people have browsed it

函数语法

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>';
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