我知道您可以将可变数量的参数传递给函数并单独访问它们。PHP - 通过引用传递可变数量的参数
例如
function foo()
{
$arg = func_get_arg(0);
$arg += 10;
}
$a = 100;
foo($a);
echo "A is $a\n";
但是,这些参数通过值传递如上所示。
是否有可能使用它们,就像它们通过引用以类似的方式通过mysqli库中的bind_param
一样?
我知道您可以将可变数量的参数传递给函数并单独访问它们。PHP - 通过引用传递可变数量的参数
例如
function foo()
{
$arg = func_get_arg(0);
$arg += 10;
}
$a = 100;
foo($a);
echo "A is $a\n";
但是,这些参数通过值传递如上所示。
是否有可能使用它们,就像它们通过引用以类似的方式通过mysqli库中的bind_param
一样?
我想提的第一件事:Don't use references。除此之外:直接做这件事是不可能的,因为引擎在调用函数之前必须知道某件事是否是引用。你可以做的是通过引用数组:
$a = 1; $b = 2; $c = 3;
$parameters = array(&$a, &$b, &$c, /*...*/);
func($parameters);
function func(array $params) {
$params[0]++;
}
如果你知道你在做什么(并且我会实现一个可以在完成时修改多个参数的函数),那么引用没有任何问题。任何足够的插件为您的网站。 – 2013-03-10 12:19:38
在99%的案例中,有比使用参考更好的设计。例如使用面向对象的设计。面向对象的设计可以更清洁,更易维护,尤其是PHP 5.4,速度更快,所需内存更少。 – johannes 2013-03-10 12:32:53
99%从哪里来? – 2013-03-10 12:48:29
你不能,只是你不能告诉PHP,这是通过引用,而不是,但!我建议做以下几点:
function foo()
{
$arg = func_get_arg(0);
$arg->val += 10;
}
$a =new stdClass();
$a->val = 100;
foo($a);
echo "$a\n"; // 110
你可以申请拳击到你想要的价值和它的作品, 希望对您有所帮助,如果您有任何疑问请询问。
也许http://php.net/manual/en/function.func-get-arg.php,例如#3,可以帮助你 – Amir 2013-03-10 11:48:37
@Amir示例3对变量数量的参数没有帮助,因为通常会从方法签名中省略这些参数,所以不能用&表示它们。 – Gordon 2013-03-10 12:42:07