博客列表 >细说函数学习心得

细说函数学习心得

越努力越幸运
越努力越幸运原创
2020年04月24日 17:27:53764浏览

//demo01

     function caculator(int $a,int $b):int{

     $c=$a+$b;

     return $c;//隐式返回,用echo;

     }

    

     $d=caculator(10.5, 20.3);//返回值仍然是整数,因为参数限定是int

     echo $d.'<br>';

    

     //字符串截取:系统函数

     $a='i like every day';

     $b=substr($a,0,5);

    

     echo $b.'<br>';

    

     //可变函数

     $funcname='caculator';

     echo $funcname(8000,0.8).'<br>';

    

     //匿名函数:闭包;use():闭包专用,可以使用父级变量;

     $discount=0.8;

    

     $getamount=function (float $money,int $num) use ($discount){

     $amount=$money*$num;

     return $amount>=2000?$amount*$discount:$amount;

     };

    

     echo $getamount(200,10).'<br>';

    

     $f=function (float $discount){

     $getamount=function (float $money,int $num) use ($discount){

     $amount=$money*$num;

     return $amount>=2000?$amount*$discount:$amount;

     };

     return $getamount;

     };

    

     echo $f(0.8)(200,10).'<br>';

//demo03

     //返回值

     function result1(){

     $state=1;

     $status='success';

    

     return $state.':'.$status;

     }

    

     echo result1().'<br>';

    

     function result2(){

     $state=1;

     $status=1;

    

     $obj['state']=$state;

     $obj['status']=$status;

    

     return $obj;

     }

    

     var_dump(result2());

     echo '<br>';

    

     function result3(){

     $obj['state']=1;

     $obj['status']='success';

    

     return json_encode($obj);

     }

    

     echo result3().'<br>';

    

     $obj=result3();

     $res=json_decode($obj,true);

    

     var_dump($res);

     echo '<br>';

    

     function result4(){//序列化

     $obj['state']=1;

     $obj['status']='success';

    

     return serialize($obj);

     }

    

     echo result4().'<br>';

    

     //反序列化

     $res=result4();

     $obj1=unserialize($res);

    

     var_dump($obj1);

     echo '<br>';

//demo04

     //值参数

     //引用参数:

     //默认参数

     //剩余参数

    

     function doadd1(float $arg){

     return $arg+=1;

     }

    

     $value=100;

     echo doadd1($value),'<br>';

     echo $value,'<br>';

    

     function doadd2(float &$arg){//引用传递!!!

     return $arg+=1;

     }

    

     $value=100;

     echo doadd2($value),'<br>';

     echo $value,'<br>';//注意,这里的$value值被改变了!!!

    

     //注意:默认参数必须在最后,否则会出错;default的用法注意一下;

     function doadd3(float $a,float $b,string $opt='+'){//默认参数(其实就是参数有一个默认值

     $result=0;

     switch ($opt){

     case '+':$result="$a+$b=".($a+$b);break;

     case '-':$result="$a-$b=".($a-$b);break;

     case '*':$result="$a*$b=".($a*$b);break;

     case '/':$result="$a/$b=".($a/$b);break;

     default:$result='非法操作符';

     }

     return $result;

     }

    

     echo doadd3(10,20).'<br>';

    

    

     //学会两个系统函数:

     //func_num_args();//参数个数

     //func_get_arg();//某个参数(需要索引号)

     //func_get_args();//所有参数(数组)

     //做+=时,或$res=$res+1;时,需要先定义$res;

    

     function doadd4(){

     $res=0;

     $number=func_num_args();

     for ($i=0;$i<$number;$i++){

     $res+=func_get_arg($i);

     }

    

     return $res;

     }

    

     echo doadd4(3,4,7,8,20);

    

     function doadd5(){//变为数组了

     $res=func_get_args();

     return $res;

     }

    

     $res=doadd5(2,3,4,5,6);

    

     var_dump($res);

     echo '<br>';

//demo05剩余参数

    //...$args起到了:$args=func_get_args();的作用;将参数之间变为数组;称为剩余参数;

     function doadd6(...$args){

     return array_sum($args);

     }

    

     print_r(doadd6(3,4,7,8,20).'<br>');

    

     //也可以采用这样的方式:

     $arr=[3,4,7,8,20];

    

     $res=doadd6(...$arr);

     var_dump($res);

     echo '<br>';

    

     $res=doadd6($arr);//注意:直接给$arr是不行的;运行结果是0;

     var_dump($res);

     echo '<br>';

    

    //结论:...$args不仅可以在创建函数时使用,也可以在调用函数时使用;

    

    

    //遍历数组时,list的作用

     $res=array();

     $res[]=[1,'frank'];

     $res[]=[2,'peter'];

     $res[]=[3,'jack'];

    

     foreach ($res as list($id,$name)){

     printf('id=%s,name=%s<br>',$id,$name);

     }

    

    

    

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议