簡體   English   中英

如何在回調函數中按參數遞增PHP變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM