我正在寻找一种最优雅的方法来传递可变数量的参数来传递一个函数。
请考虑这样一个函数:
function abc ($x, $y, $l, $m) {
...
}
字符串
有没有一种不需要大量“ifs”或变量帕辛作为一个变量来调用函数的优雅方法:
all ($x, $y, $l, $m) arguments
first three ($x, $y, $l) arguments
first and third ($x, $l) arguments
only second ($y) argument
last two ($l, $m) arguments
型
还请多多指教。
8条答案
按热度按时间pb3skfrl1#
我宁愿使用数组作为参数,并在函数内部检查它以查看变量是否存在:
字符串
14ifxucb2#
看看
func_get_args()
,func_get_arg()
和func_num_args()
。当然,当你使用这些参数时,你不可能只通过调用
abc($x, $l)
来获得“第一个”和“第三个”参数,你必须调用abc($x, null, $l)
。klh5stk13#
我最近需要一个函数来动态调用其他函数,并试图使一些最优雅和易于维护的东西。也许这种方法可以为谁而不是需要传递不同数量的参数到同一个函数寻找如何使用一种方式来调用任何所需的函数有用。
字符串
在我的例子中,我传递了一个在Web服务中可用的函数,并为
$parameters
数组提供了每个函数所需的参数。https://secure.php.net/manual/en/function.call-user-func-array.php
vi4fp9gy4#
你是想说你想检查函数中设置了多少个变量吗?也许这能帮上忙
字符串
wfsdck305#
字符串
zengzsys6#
我想不出任何确切的替代方案,你的解决方案.要么你必须传递空的参数,你不想发送像
abc (null, $y, null, $m)
或者是使用call_user_func_array,
字符串
erhoui1w7#
字符串
然后你可以像这样调用函数:
所有($x,$y,$l,$m)参数
前三个($x,$y,$l)参数
第一个和第三个($x,null,$l)参数
只有第二个(null,$y)参数
最后两个(null,null,$l,$m)参数
rqmkfv5c8#
字符串
这种方式如预期的那样工作,您甚至可以通过引用传递参数。