Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.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是否可以将数组转换为变量并将它们传递到某个地方_Php - Fatal编程技术网

PHP是否可以将数组转换为变量并将它们传递到某个地方

PHP是否可以将数组转换为变量并将它们传递到某个地方,php,Php,简而言之,我想要的是一种导出函数,而不是导出,它在符号表中创建新变量并返回创建的变量数 我试图弄清楚是否可以声明一个函数 function foo($bar, $baz) { var_dump(func_get_args()); } 然后传递一个数组,这样数组的每个值都代表param 只是想知道这是否可能,似乎并非如此 我需要动态加载,所以参数的数量,数组的大小可能会有所不同-请不要提供传递它作为 foo($arr['bar']); 等等 同样,理想的解决方案是这样的 foo(arr

简而言之,我想要的是一种导出函数,而不是导出,它在符号表中创建新变量并返回创建的变量数

我试图弄清楚是否可以声明一个函数

function foo($bar, $baz)
{
    var_dump(func_get_args());
}
然后传递一个数组,这样数组的每个值都代表param

只是想知道这是否可能,似乎并非如此


我需要动态加载,所以参数的数量,数组的大小可能会有所不同-请不要提供传递它作为

foo($arr['bar']);
等等

同样,理想的解决方案是这样的

foo(array('foo'=>'1', 'bar'=>'2', ..., 'zzz'=>64));
申报

function foo($foo, $bar, ..., $zzz) {}
据我记忆所及,在某些动态语言中,列表的行为可能是这样的,也可能是我错了

我想在类中创建动态参数化方法,而控制函数参数数量、默认值等的内置机制对此非常有用,因此我可以在方法体中去掉数组参数、func_get_args和func_get_num调用

提前谢谢。

您要找的

例如:

你在找什么

例如:

使用如何

取自PHP示例的代码

如何使用


取自PHP示例的代码

我不知道速度,但您可以使用它来获取参数的名称,并结合调用函数。也可以用于调用。

我不知道速度如何,但您可以使用它来获取参数的名称,并结合调用函数。也可以用于调用。

直接传入关联数组并对该数组执行操作怎么样?

直接传入关联数组并对该数组执行操作怎么样?

最近,这种编码方式有了很大的发展,尤其是在使用第三方库,即Facebook SDK时。我个人更愿意使用经典函数参数来清楚地向函数的调用者说明所需的接口。或者,将其强制转换为一个对象并对其进行迭代,并在函数声明中建议类型,例如函数MyFuncMyClass$classInstance{}@mike我也更喜欢经典方法。但是,使用关联数组是有理由的。就个人而言,我更喜欢混合方法。最重要的/必需的参数作为函数参数,可选的/额外的参数作为关联数组,这取决于可选/额外参数的数量。@w3d关于使用对象的好观点。这是一种语义更清晰的方法,例如使用PHPDoc记录文档更容易一些。只需添加/更正我上面的注释-如果您只是简单地将数组强制转换到对象,则会得到stdClass的实例。正如我的示例所看到的那样,你不能简单地在PHP中键入任意类,例如MyClass。最近,这种编码风格有了很大的发展,尤其是在使用第三方库(如Facebook SDK)时。我个人更愿意使用经典函数参数来清楚地向函数的调用者说明所需的接口。或者,将其强制转换为一个对象并对其进行迭代,并在函数声明中建议类型,例如函数MyFuncMyClass$classInstance{}@mike我也更喜欢经典方法。但是,使用关联数组是有理由的。就个人而言,我更喜欢混合方法。最重要的/必需的参数作为函数参数,可选的/额外的参数作为关联数组,这取决于可选/额外参数的数量。@w3d关于使用对象的好观点。这是一种语义更清晰的方法,例如使用PHPDoc记录文档更容易一些。只需添加/更正我上面的注释-如果您只是简单地将数组强制转换到对象,则会得到stdClass的实例。正如我的示例所看到的那样,您不能简单地将类型转换为任意类,例如PHP中的MyClass。但是,我认为@dig希望根据关联数组传入任意数量的参数-我假设哪些参数或特定参数的顺序可能不同?尽管此方法允许您为常规参数传递数组,但它仅取决于该数组的顺序以及没有键丢失、变量名或数组键丢失的事实。我认为这种方法适用于相同类型的多个参数。。。这正是func_get_args的作用所在。只需添加由于call_user_method_array$obj,$method,$params已被弃用,因此应使用call_user_函数_arrayarray$object,$method,$params进行对象调用。但是,我认为@dig希望根据一个关联数组传入任意数量的arg——我假设哪个arg或特定arg的顺序可能不同?尽管此方法允许您为常规参数传递数组,但它仅取决于该数组的顺序以及没有缺少键的事实,即变量n
ames或数组密钥丢失。我认为这种方法适用于相同类型的多个参数。。。这正是func_get_args的作用所在。只需添加由于call_user_method_array$obj,$method,$params已被弃用,应使用call_user_函数_arrayarray$object,$method,$params用于对象调用。但我不认为参数名在编译时是已知的-它们不需要通过此方法吗?但我不认为参数名在编译时是已知的-它们不需要通过此方法吗?参数的数量、数组的大小可能会有所不同-因此,例如,您是说$bar可能不存在,因为原始数组中可能不存在'bar'=>'2'?你希望如何在你的职能中处理这个问题?是的,你是对的。由于php中的函数不能使用命名参数调用,因此参数将由数字控制。而@Mike Sherov提出的建议非常适合这里,尽管可读性受到一些影响。带有反射的Variant也很好,但速度较慢。参数的数量、数组的大小可能会有所不同-那么,您是说$bar(例如)可能不存在,因为“bar”=>“2”可能不存在于原始数组中吗?你希望如何在你的职能中处理这个问题?是的,你是对的。由于php中的函数不能使用命名参数调用,因此参数将由数字控制。而@Mike Sherov提出的建议非常适合这里,尽管可读性受到一些影响。带有反射的变体也不错,但速度较慢。
function foo($bar, $baz)
{
    return call_user_func_array('beepboop',func_get_args());
}

function beepboop($bar, $baz){
    print($bar.' '.$baz);
}

foo('this','works');
//outputs: this works
<?php

/* Suppose that $var_array is an array returned from
   wddx_deserialize */

$size = "large";
$var_array = array("color" => "blue",
                   "size"  => "medium",
                   "shape" => "sphere");
extract($var_array, EXTR_PREFIX_SAME, "wddx");

echo "$color, $size, $shape, $wddx_size\n";

?>