[英]How to increment PHP variable by parameter in callback function?
如何以類似於下面的樣式遞增變量($ varA $ varB),或者該函數不起作用,如下所示:
function myfunc($paramA,$paramB)
{
$varA+=$paramA;
$varB+=$paramB;
return array($varA,$varB);
}
$increm=myfunc(2,7);
echo $increm[0]; //2
echo $increm[1]; //7
$increm=myfunc(4,5);
echo $increm[0]; //6
echo $increm[1]; //12
我想在每次調用此函數時增加回調函數中的變量。
有幾種不同的方法可以做到這一點,例如,使用全局變量,但是我不鼓勵這樣做。 問題在於, $varA
和$varB
是函數的本地$varA
並且$varB
調用函數時都會被重置(有效地重置為0)。 因此,為了保持函數調用之間的舊值,可以嘗試使用靜態類成員,如下所示:
class myfunc {
static private $varA = 0;
static private $varB = 0;
public function inc($paramA, $paramB) {
self::$varA += $paramA;
self::$varB += $paramB;
return array(self::$varA, self::$varB);
}
}
$increm = myfunc::inc(2,7);
echo $increm[0];
echo $increm[1];
$increm = myfunc::inc(4,5);
echo $increm[0];
echo $increm[1];
這將為您提供以下輸出:
2
7
6
12
另外,您可以保留函數,但仍使用靜態類成員:
class MyGlobals {
static public $varA = 0;
static public $varB = 0;
}
function myfunc($paramA, $paramB) {
MyGlobals::$varA += $paramA;
MyGlobals::$varB += $paramB;
return array(MyGlobals::$varA, MyGlobals::$varB);
}
$increm = myfunc(2,7);
$increm = myfunc(4,5);
希望能有所幫助
您要遞增的變量實際上在函數范圍內,因此您不能在每次調用該函數時遞增。 同樣,在需要增加變量的值之前,需要定義其初始值。
function myfunc($varA, $varB, $paramA,$paramB)
{
$varA += $paramA;
$varB += $paramB;
return array($varA,$varB);
}
然后可以調用函數:
$increm = myfunc(10,10,2,7);
比數組中返回的值還多。
$increm2 =myfunc($increm[0], $increm[1],2,7);
注意:當然,這是其他方法,但是我正在嘗試遵循您的邏輯,這是最簡單的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.