如何在回调函数中通过参数递增PHP变量?

时间:2015-12-12 16:05:19

标签: php function variables operators increment

如何以类似下面的类似方式增加变量($ 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

每次调用此函数时,我想在回调函数中增加变量。

2 个答案:

答案 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);

注意:这当然是其他方法,但我试图遵循你的逻辑,这是最简单的方法。