🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
**一.参数类型** 1.位置参数 ``` str_contains('FooBar', 'Foo'); ``` 2.命名参数 ``` str_contains(haystack: 'FooBar', needle: 'Foo'); ```   **二.命名参数定义** ``` #声明$中的参数名称不带符号将是参数名称,或函数形参的名字取$后变为实参的命名参数. #格式:name:'user1'或name:$name function show($name,$age){ echo "$name,$age"; } show(name:'user1',age:'123'); ```   **三.支持命名参数兼容程度** 1.新函数 ``` function str_contains(string $haystack, string needle): bool {} $b=str_contains(needle:'php8',haystack:'my name is php8',); var_dump($b); ``` 2.自定义函数 ``` function show($name,$age){ echo "$name,$age"; } ``` 3.大部分不向后兼容 ``` echo substr(string:'my name is php8',start:3,length:4); ```   **四.传参顺序** ``` #命名参数可不按参数顺序传递 show(name:$name,age:$age); show(age:$age,name:$name); ```   **五.可选参数和默认值** ``` #当函数或方法用默认值声明参数时,并且如果命名参数调用站点没有为该参数设置值,则将使用默认值,就像位置参数调用一样. function show($name,$age=20){ echo "$name,$age"; } show('user1'); show(name:'user1'); ```   **六.跳过参数** ``` #如果未在调用站点上明确设置,则命名参数将继承默认值。这样就可以跳过函数/方法调用的可选参数,这对于位置参数如果没有默认值就无法实现。 function show($name,$age=20,$sex='nan'){ echo "$name,$age,$nan"; } show(name:'user1',sex:'nv'); #扩展实例 try{ show(sex:'nv'); }catch(ArgumentCountError){ echo 'sex nv error'; } ```   **七.覆盖参数** ``` #不允许覆盖之前设置的参数: function show($name,$age){ echo "$name,$age"; } show(name:'user1',age:25,name:'user2'); ```   **八.混合命名和位置参数** ``` #可以在同一调用中使用命名参数和位置参数,位置参数必须在命名参数前面。 function show($name,$age){ echo "$name,$age"; } show(name:'user1',25); ``` **九.带有继承链的命名参数** ``` #PHP的命名参数功能允许重命名参数名称。 class Person{ public function show($name){ echo $name; } } class User extends Person{ public function show($age){ echo $age; } } $obj=new User(); $obj->show(age:25); ```   **十.func_get_arg函数** ``` #注意参数顺序 function show($name, $age){ echo func_get_arg(0); } show(age:25,name:'user1'); ```   **十一.可变参数的命名参数** ``` #可变参数可以收集未分配给先前参数(如果有)的参数,并且其名称将被保留。 function show($a, $b, ...$args) { print_r($args); } show(1,2,name:'user1',age:25,sex:'nv'); show(1,2,80,name:'user1',age:25,sex:'nan'); ```   ### **系统的学习PHP** 关注:PHP自学中心,回复相应的关键词,领取以下视频教程 **jwt原理与实战应用** 公众号里回复:562378   #### **还有其他的教程的关键词,请关注公众号查看每天分享的文章教程的头部** ![](https://img.kancloud.cn/96/af/96af322d2cdc53d3fbbe981affa60c7f_150x150.jpg)