如何以类似于下面的样式递增变量($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);
注意:当然还有其他方法可以做到这一点,但我试图遵循你的逻辑,这是最简单的方法。