php函数多个参数实现传参任意顺序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php函数多个参数实现传参任意顺序?相关的知识,希望对你有一定的参考价值。

function test($str='',$flot=0,$i=0,$obj=null)


//例如这个函数四个参数调用的时候,我只用到第三个参数,这时只传一个参数第三个int那个,需要调用这个函数的时候,test('',0,100); 这样调到很麻烦!,需要填前面两个占位!
怎么实现这样调用 test(100); //直接只传一个参数,函数里面又知道传的是第三个参数?不是第一个? 就是只传一个或两个参数的时候,不用按顺序填前面占位?
除了判断,传进去的参数的类型有什么好方法?

参考技术A 这个不行,因为本身就会有逻辑错误。比如:他怎么知道。test(100)是$i,而不是$obj呢。也可能是第五个参数呢。要么test方法判断,要么占位。这个没啥好办法 参考技术B 你的函数的状态太多....就是运行的前提太多。另外写一个函数包含了这个的运行状态再运行
function test2($i=0) test('',0,$i,null);
调用test2(100);
参考技术C 简单的不定量传参函数可以解决无序传参:在你这做个记号,免得以后忘了;
function test($value)
if(isset($value['1'])
echo “当传递了第一个参数的时候:$value['1']”;

if(isset($value['2'])
echo “当传递了第二个参数的时候:$value['2']";


test([1=>"test1"]);
test([2=>["test2"]);
参考技术D function handle(...$args)
$params_array = func_get_args();
var_dump($params_array);

这个方法支持任意多个参数
第5个回答  2022-04-02 //一个数组搞定 , 相传什么传什么
function test($data=[])
$str=$data['str']??'';
$flot=$data['flot']??0;
$i=$data['i']??0;
$obj=$data['obj']??null;

调用 :test(['i'=>2])

函数传参

函数传参

1、(*args) : *可变参数,多个参数时可写*名字,可以不传 ,可以传多个参数

2、(name="None")  可以不传,默认值参数

3、(**kwargs) 字典格式 key:values格式 关键字参数 (**info): kwargs可以随意起名字

4、(word) 位置参数,必传参数

 

注意:使用顺序为:必填参数、默认值参数、可变参数、关键字参数

eg:def t1(word,name="None",*args,**kwargs)

以上是关于php函数多个参数实现传参任意顺序?的主要内容,如果未能解决你的问题,请参考以下文章

python -- 函数传参

函数传参

函数2——参数

php函数

PHP中的构造函数

PHP传递任意数量的函数参数