【发布时间】:2012-03-01 06:08:23
【问题描述】:
想知道是否可以进行类似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 数组,但我只是想知道是否有一个已经编译的函数可以为我做这件事。
谢谢。
-- 编辑--
抱歉,我忘了说我正在触摸的代码已经存在,这意味着我无法更改函数签名。
【问题讨论】:
-
PHP 没有命名参数,这就是为什么你不能这样传递它们的原因。因此,您实际上要寻找的是在每个 call_user_func_array 传递它之前订购一个关联数组?
-
@hakre:谢谢伙计,第一个链接就是我要找的(get_defined_vars())。我通读了 php 文档并找不到这个,似乎他们应该将它作为来自 func_get_args() 文档页面的链接。我很乐意结束这个问题,或者如果你想作为答案发布,那也可以。
-
@Mario:对不起,我忘了说它是现有代码,这意味着我无法更改签名。
-
@MikePurcell:添加了包含更多信息的答案,以便更好地在两者之间做出决定。