在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";
}
}