Blogger Information
Blog 26
fans 0
comment 0
visits 21531
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
函数的理解应用
default
Original
595 people have browsed it

函数语法

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. }
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