我知道您可以將可變數量的參數傳遞給函數並單獨訪問它們。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