想知道是否可以进行func_get_args()
(reference)这样的调用,但不是生成一个0索引数组,而是生成一个使用变量名作为键的关联数组?
例如:
function foo($arg1, $arg2)
{
var_dump(func_get_args());
}
foo('bar1', 'bar2');
// Output
array(2) {
[0]=>
string(4) "bar1"
[1]=>
string(4) "bar2"
}
// Preferred
array(2) {
[arg1]=>
string(4) "bar1"
[arg2]=>
string(4) "bar2"
}
我问这个问题的原因是,我需要验证这些作为数组传递给RPC函数的参数是否真的被填充了,而且看起来最好对内容进行详细说明,而不是希望它们以正确的顺序传递:
// Now
if (array_key_exists(0, $args)) {
// Preferred
if (array_key_exists('arg1', $args)) {
在传递给RPC之前,从传递给原始函数的args创建assoc数组对我来说很容易,但我只是想知道是否有一个已经编译好的函数可以为我做这件事。
谢谢。
- -编辑--
抱歉,我忘了提一下我正在触摸的代码已经存在,这意味着我不能更改函数签名。
2条答案
按热度按时间uttx8gqw1#
你可以在函数的开头使用
get_defined_vars
Docs,这样它就只包含传递的(和定义的)参数:输出(Demo on 3v4l.org):
如果你在函数内部使用静态或全局变量,请在调用
get_defined_vars
后指定它们,例如:注意这与
func_get_args
Docs不同,func_get_args
Docs也包含传递的但未定义的函数参数,同样默认参数也不是func_get_args
的一部分,但get_defined_vars
自然会使用默认值。agxfikkp2#
您应该要求参数本身不是参数,而是一个关联数组: