函数的组成:
1.函数有关键字function
、函数名、参数以及函数体组成和函数返回值;
2.函数的参数可以约定类型,在参数声明参数类型关键字,函数参数通过:
来约定函数返回值类型
3.例子
function sum(int a,int b):int
{
return $a+$b;
}
函数分类:
- 命名函数:就是普通函数;函数具有自动提升,在全局任何时候调用都有效,变量不行;
- 匿名函数:与命名函数就就差函数名,一般当作参数,返回值等等,匿名函数一般赋值给变量调用;匿名函数可以通过
use
来允许函数调用时使用函数外部变量
函数参数的分类
1.必须参数:在函数调用时,必须传参
2.默认参数:参数有默认值,函数调用可以不传参
3.可选参数:参数数量不定;函数调用时传几个用几个,类似JS种的剩余参数
4.引用参数:参数前面加&
引用符,引用参数,可以不用return直接实时改变函数外部的变量
函数的返回值:单值
1.数组
2.对象
3.序列化字符串:
- PHP内容序列化函数:serialize()序列化和unserialize()反序列化
- 通用序列化:json_encode():转换陈字符串,json_decode():解析字符串(默认返回对象类,第二个参数设置true时返回数组)
函数的作用域:
1.函数作用域:函数调用时产生作用域,作用域的操作无法使用直接使用外部变量和影响外部的值;
2.使用外部变量可以同 global
声明变量时全局变量,或者通过超全局变量$GLOBALS[0]
使用外部变量
3.匿名函,数可以通过use
来使用外部变量,函数结束后就会释放外部变量;如果想实时改变外部变量可以同通过取值符&
use(参数)前加上取值符即可
4 . use禁止使用以下三种参数
- 超全局变量不让用
- $this
- 与当前参数重名不让用
PHP中异步调用函数
1.call_user_func(“函数名”,函数参数);
2.call_user_func_array(“函数名”,函数参数列表);
3.调用实列方法的用法
//实例方法的调用
call_user_func_array([new User,"show"],[参数列表]);
//类静态方法的调用
call_user_func_array("User::say",[参数列表]);
函数种的静态
1.函数中的静态变量不会随函数调用结束而消失
2.他会自动进入到下一次的函数调用中
3.可以实现在函数的多次调用过程中:共享数据 / 数据通信
PHP基础知识点:
1.explode(‘分界符’,字符串):把字符串拆成组装成索引数组;
2.implode(‘分隔符’,数组):把数组种的值展开组成字符串并返回
3.函数中与参数有关的函数:
- func_sum_args():获得参数个
- func_get_arg():获得所有参数
- func_get_args(n):获取某个参数n索引
4.extract():把关联数组中的拉平成变量,键做变量名,值做变量值
代码练习
<?php
function sum(int $a,int $b) :string
{
return $a+$b;
}
echo var_dump(sum(12.23,5));
function show(string $name="种业圈"):string
{
return $name."欢迎你!";
}
echo show();
echo show("zhongyequan");
function avg(...$agr):string
{
return array_sum($agr)/count($agr);
}
echo avg(1,2,3,4);
$arr_p=["name"=>"ldy","age"=>20];
echo implode(",",$arr_p);
var_dump(explode(",",implode(",",$arr_p)));
extract($arr_p);
echo $name,$age;
$a=10;
echo '$a的原始值',$a;
function change(int &$a)
{
$a++;
}
echo change($a);
echo '运行函数后$a的值',$a;
echo "<hr>";
function Asc(){
static $a=0;
return $a++."<br>";
}
echo Asc();
echo Asc();
echo Asc();
echo Asc();
echo "<hr>";
$site="种业圈";
$bg=function (string $a,string $b) use ($site){
return $a.$b.$site;
};
echo $bg("你好!","欢迎你来到");
function arr(string $a,int $b) :string
{
return json_encode(["name"=>$a,"age"=>$b]);
}
echo arr("ldy",20);
var_dump(json_decode(arr("ldy",20),true)) ;