PHP静态变量未按预期工作

时间:2008-10-13 09:36:20

标签: php javascript

example来自php.net:

<?php
function Test()
{
    static $a = 0;
    echo $a;
    $a++;
}
?>

这是我的代码:

function getNextQuestionID()
{
    static $idx = 0;
    return $idx++;
}

我在JavaScript中使用它:

'quizID=' + "<?php echo getNextQuestionID(); ?>"

每次都返回0。为什么呢?

4 个答案:

答案 0 :(得分:5)

我相信你误解了静态变量的作用。试试这个代码你可能会更好地理解:

echo getNextQuestionID() . ", " getNextQuestionID() . ", " getNextQuestionID();

你会明白我的意思。

只要脚本有效,静态var就会存在。

它在第一次运行而不是1时返回0的原因是因为您使用的是后缀运算符$ var ++而不是前缀版本 - ++ $ var。不同之处在于,仅在函数返回后使用后缀运算符时才应用增量 - 但如果使用前缀运算符,则在函数返回之前应用它。

答案 1 :(得分:1)

session_start();
function getNextQuestionID()
{
    if (!isset($_SESSION['qNo'])) {
        $_SESSION['qNo'] = 0;
    } else {
        $_SESSION['qNo']++;
    }

    return $_SESSION['qNo'];
}

答案 2 :(得分:0)

如果您希望数据在多个页面中保持不变,则需要使用sessions

答案 3 :(得分:0)

setup

返回1,2,3,4

“静态”意味着,只要您的脚本正在运行,变量的值就会保留(一个网站调用!以保持多个网站调用,您将需要SESSIONS)。如果函数被多次调用,则该值保持不变,并且不会一直重新初始化,因此可递增。