Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中提取func_get_参数_Php - Fatal编程技术网

在PHP中提取func_get_参数

在PHP中提取func_get_参数,php,Php,我有以下职能: function a() { b(extract(func_get_args(),EXTR_PREFIX_ALL)); } function b() { foreach(func_get_args()as$arg) echo"$arg\n"; } 我想打以下电话: a("Foo","Bar"); 我希望得到以下结果: Foo Bar var_dump(func_get_args())返回: array(2) { [0]=> s

我有以下职能:

function a()
{
     b(extract(func_get_args(),EXTR_PREFIX_ALL));
}
function b()
{
    foreach(func_get_args()as$arg)
        echo"$arg\n";
}
我想打以下电话:

a("Foo","Bar");
我希望得到以下结果:

Foo
Bar
var_dump(func_get_args())返回:

array(2) {
    [0]=> string(3) "Foo"
    [1]=> string(3) "Bar" 
}
var_dump(extract(func_get_args(),EXTR_PREFIX_ALL))返回
NULL


我错过了什么

你不能那样做
extract
接收一个关联数组,以便能够通过使用键作为名称和值作为值来声明当前范围内的变量,并且
func\u get\u args
返回一个简单数组

仔细检查后,您缺少前缀:

b(extract(func_get_args(),EXTR_PREFIX_ALL, "prefix"));
extract()。我不知道你为什么要在这里使用它

如您所见,当您调用
a(“Foo”、“Bar”)
时,
func\u get\u args()
将为您提供这两个元素的数组

如果在
a()
内,您执行了以下操作:

foreach(func_get_args() as $arg){
    echo"$arg\n";
}
那就行了

如果要将这些参数传递给另一个函数,则可以执行以下操作:

function a(){
    call_user_func_array('b', func_get_args());
}
如果您使用的是PHP 5.6+,则可以使用:


阅读手册:为什么要调用
extract()
?你想干什么?你希望你的代码做什么?我正试图将一个未指定数量的参数传递到一个传递了未指定数量参数的函数中。标志
EXTR\u PREFIX\u ALL
PREFIX
附加到一个简单数组中的所有键,或者至少这是手册页声称的。@EvanHendler刚刚仔细检查了一下,你是对的,但是您缺少前缀。我已经编辑了我的答案。好的,现在试一试。它正在转储
int(2)
。这是提取的结果,现在您的作用域中有$prefix\u 0和$prefix\u 1变量。不,您将无法将这些变量作为参数传递。我只是想解释为什么extract不适合你。你最好检查一下@RocketHazmat的答案。好吧,我不知道为什么我会被否决这么多,因为
操作符是我最近学到的最酷的东西。三分钟后我就接受了。是的,很好用!这正是我需要的!很高兴我能帮忙:-)
function a(...$args){
    b(...$args);
    // Or you can do:
    // b(...func_get_args());
}

function b(...$args){
    foreach($args as $arg){
        echo"$arg\n";
    }
}