如何以类似下面的类似方式增加变量($ 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
每次调用此函数时,我想在回调函数中增加变量。
答案 0 :(得分:1)
有几种不同的方法可以做到这一点,例如:全局变量,但我不鼓励这样做。问题是,$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);
希望有所帮助
答案 1 :(得分:0)
要增加的变量实际上在函数范围内,因此每次调用函数时都不能递增。在您需要增加变量值之前,还需要定义其初始值。
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);
注意:这当然是其他方法,但我试图遵循你的逻辑,这是最简单的方法。