登录  /  注册
博主信息
博文 26
粉丝 0
评论 0
访问量 20526
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
函数的理解应用
default
原创
571人浏览过

函数语法

1.函数的构成

  • 函数分成三个部分
  • 1.fun1 是函数名
  • 2.$a,$b 参数
  • 3.return $a+$b; 函数的返回值
  1. function fun1($a,$b){
  2. //显式
  3. return $a+$b;
  4. //隐式:结束大括号时候自动返回
  5. }
  6. echo fun1 (10,20);

2.函数的声明

1.自定义函数

  • 自定义函数就是 自己命名按照需求去写的函数
  • getPrice 小驼峰命名法
  • get_price蛇形命名法 声明公共函数时候用
  1. function getPrice($a,$b){
  2. $sum=$a+$b;
  3. }
  4. getPrice (1,2);

2.系统函数

  • php 系统提供了很多函数
  1. $str='今天上课真开心';
  2. echo mb_substr ($str,0,5);

3.可变函数/变量函数

  • 把函数变成变量存进去
  • 写了个小实例就是上传文件是png时候用png的处理方式
  1. $fileName='hhh.png';
  2. $action= trim (strrchr ($fileName,'.'),'.');
  3. function jpg(){
  4. echo 'jpg';
  5. }
  6. function png(){
  7. echo 'png';
  8. }
  9. echo $action($fileName);

4.匿名函数:闭包

  • 匿名函数没有名字调用,传参普通函数一样 没人么区别
  1. $discount=0.8;
  2. $getAmount =function (float $money, int $num) use($discount):float
  3. {
  4. $amount =$money*$num;
  5. return $amount>=2000?$amount*$discount:$amount;
  6. };
  7. //echo $getAmount(100,20);
  • 1.链接闭包和外界变量的关键字是use 闭包函数不能调用所在代码块的上下文变量,而需要通过使用use关键字
  • 2.在子级函数中使用use 就能引用到全局变量 并且把子级函数像变量一样 返回出去
  • 3.传参是时候//echo $f(0.6)(200,20);
  1. $discount=0.8;
  2. $f=function ($discount){
  3. $getAmount =function (float $money, int $num) use($discount):float
  4. {
  5. $amount =$money*$num;
  6. return $amount>=2000?$amount*$discount:$amount;
  7. };
  8. return $getAmount;
  9. };
  10. //echo $f(0.6)(200,20);

3.函数的返回值

  • 函数的返回值原则上是单值返回 如果需要多值返回那么有4种
  • 1.字符串拼接
  • 2.数组
  • 3.json
  • 4.序列化返回

    1.字符串拼接

  • 适合处理大量的php+html混写
  • 这种返回的格式是用户自定义的,前端处理非常麻烦
  1. function demo1(){
  2. $status=1;
  3. $message='成功';
  4. return $status . $message;
  5. }
  6. echo demo1 ();

2.数组返回

  • 正常返回数组就可以
  1. function demo2(){
  2. return ['status'=>'1' , 'message'=>'成功'];
  3. }
  4. //echo print_r (demo2(),true);

3.把数组用 json 返回

  • json :是通过js对象字面量的方式来表示数据,是一种轻量级的通用的数据交换或者传输方式
  • json:本质上就是一个具有一定结构和格式的字符串,不过这种格式得到了公认,几乎所有的编程员都有支持他的接口
  • 有两个函数 json_decode//将json格式的字符串还原/解析成php的数组或者对象 第二个参数要传true json_encode//将php数据编码为json返回
  1. function demo3(){
  2. //json_encode ();将php数据编码为json返回
  3. return json_encode (['status'=>'1' , 'message'=>'成功']);
  4. }
  5. $data= demo3 ();
  6. //将json格式的字符串还原/解析成php的数组或者对象 第二个参数要传true
  7. $var =json_decode ($data,true);
  8. //print_r ($var);
  9. //这是返回值
  10. {
  11. "status":"1",
  12. "message":"\u6210\u529f"
  13. }

4.序列化

  • 序列化是php独有的形成字符串的返回的方式
  • serialize()//序列化这段合法的字符串
  • unserialize()//序列化后的变回字符串形式
  1. function demo4(){
  2. return serialize (['status'=>'1' , 'message'=>'成功']);
  3. }
  4. echo demo4 ();
  5. //a:2:{s:6:"status";s:1:"1";s:7:"message";s:6:"成功";} 这是值
  6. print_r (unserialize (demo4 ()));
  7. //这是返回值
  8. //Array ( [status] => 1 [message] => 成功 )

4.函数参数

1.值参数

  • 也就是默认传参
  1. function demo1($arg){
  2. return $arg *=2;
  3. }
  4. $val=100;
  5. echo demo1 ($val),'<br>';
  6. //在函数中改变了调用参数的值 ,但是原始调用参数并没有发生变化
  7. echo $val .'<hr>';

2.引用参数

  • 也就是用取地址符来改变参数的值,也就是以传址的方式改变变量的值
  1. function demo1(&$arg){
  2. return $arg *=2;
  3. }
  4. $val=100;
  5. echo demo1 ($val),'<br>';
  6. //在函数中改变了调用参数的值 ,但是原始调用参数并没有发生变化
  7. echo $val .'<hr>';

3.默认参数

  • 多个值按照顺序去填写的值
  1. function demo3(float $a,float $b,string $opt='+')
  2. {
  3. if ($opt=='+'){
  4. $res=$a+$b;
  5. } elseif ($opt=='-'){
  6. $res=$a-$b;
  7. }elseif ($opt=='*'){
  8. $res=$a*$b;
  9. }elseif ($opt=='/'){
  10. $res=$a/$b;
  11. }else{
  12. $res='去你的吧';
  13. }
  14. return $res;
  15. }
  16. //echo demo3 (10,20).'<br>';
  17. echo demo3 (10,20,'1').'<br>';
  18. //echo '<hr>';

4.剩余参数

  • 剩余参数是简化了多个的传进来的值
  • 参数也可以是数组的形式
  1. //剩余参数归纳符
  2. function demo6(...$args)
  3. {
  4. return $args;
  5. }
  6. //print_r (demo6(1,2,3,4,5,6,8)) ;
  7. //echo 123;
  8. function demo6(...$args)
  9. {
  10. return array_sum ($args);
  11. }
  12. //print_r (demo6(1,2,3,4,5,6,8)) ;
  13. //echo 123;
  14. $args=[1,23,5,123,51];

扩展数组解包

  1. //1.用在函数的形式参数列表中,表示收集,将多个离散的参数打包到一个数组中
  2. //2.用在函数的调用列表中,表示展开,还原将一个数组展开成一个个参数值
  3. $arr[]=[101,'php1','html1'];
  4. $arr[]=[102,'php2','html2'];
  5. $arr[]=[103,'php3','html3'];
  6. //数组解包
  7. foreach ($arr as list($id ,$name ,$grade)){
  8. printf ('id=%s,name=%s<br>',$id,$name);
  9. }
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:完成的相当不错
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学