如何在回调函数中通过参数增加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是函数的本地值,每次调用函数时都会重置(有效地重置为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);

注意:当然还有其他方法可以做到这一点,但我试图遵循你的逻辑,这是最简单的方法。