PHP:通过键值
通过函数的参数迭代我有一个PHP函数function foo($bar1, $bar2, $bar3)
PHP:通过键值
是否有可能获得的参数名称和动态值?
我发现func_get_args
(http://php.net/manual/de/function.func-get-args.php),但将返回类似
0 => "valueOf$bar1", 1=> "valueOf$bar2", 2 => "valueOf$bar3"
我想的却是这样的:
"$bar1" => "valueOf$bar1", "$bar2"=> "valueOf$bar2", "$bar3" => "valueOf$bar3"
这可能吗?
您可以使用get_defined_vars
。一个example
没有想到这一点,但这意味着你得到所有定义的参数,而不仅仅是传递的实际参数,即你将在默认值中省略参数。产生阵列。 – soulmerge 2012-07-27 10:21:38
@soulmerge只要给所有参数默认为'NULL',这应该不会影响,因为'isset()'仍然会返回'FALSE'。如果你想完全去除它们,你总是可以'array_filter()'。 – DaveRandom 2012-07-27 10:28:09
它可以被实现,但涉及很多努力。您需要通过reflection获取参数名称,并将名称映射到通过func_get_args
检索的值。
如果你真的需要这个,你可以采取另一种更简单的途径,并定义你的函数只有一个parameter object:
class MyParamObj {
public $foo;
public $bar;
}
function myfunc(MyParamObj $args) {
# ...
}
这是一个很好的解决方案。虽然 – Horen 2012-07-27 11:57:02
简短的回答:没有。如果您想传递键/值对,请使用数组或对象。长(呃)答案:是的,它可以使用反射或'get_defined_vars()'和剥离所有超全球 - 但**不**。 – DaveRandom 2012-07-27 10:13:53
......并且毫无意义。函数参数名称与PHP(仍然)无关。 – Narf 2012-07-27 10:20:37