我試圖自動打印分數,如果問題是正確的,它應該增加分數。我想這樣的功能:無法增加PHP中的靜態值v
function checkscore()
{
static $score = 0;
if ($_SESSION['result'] == "Correct")
$score++;
return $score;
}
這個函數返回如果問題是正確的或如果問題是錯誤的。但是,$分數在任何情況下都不會增加。我怎樣才能增加$分數變量?
我試圖自動打印分數,如果問題是正確的,它應該增加分數。我想這樣的功能:無法增加PHP中的靜態值v
function checkscore()
{
static $score = 0;
if ($_SESSION['result'] == "Correct")
$score++;
return $score;
}
這個函數返回如果問題是正確的或如果問題是錯誤的。但是,$分數在任何情況下都不會增加。我怎樣才能增加$分數變量?
沒有什麼不對您的代碼,但我想像你期待的靜態變量在多次調用該腳本留在所有腦幹。
這不是靜態的工作原理!
如果你使用這樣的:
function checkscore()
{
static $score = 0;
if ($_SESSION['result'] == "Correct")
$score ++;
return $score;
}
echo checkscore() . '<br>';
echo checkscore() . '<br>';
echo checkscore() . '<br>';
你將得到的結果:
1
2
3
但是,如果你在這裏用戶回答一個問題,形式形式調用腳本提交給此腳本static
將無法按預期工作。每次調用腳本時,靜態變量都將初始化爲零。
如果你想記住在多個調用腳本$得分的價值,你必須把它保存在$ _SESSION像這樣
function checkscore()
{
$score = isset($_SESSION['score']) ? $_SESSION['score'] : 0;
if ($_SESSION['result'] == "Correct")
$score ++;
$_SESSION['score'] = $score;
return $score;
}
yup thnx很多其工作良好的bu有一個問題仍然存在問題,直到問題它的工作正常,但在question3之後它的打印分數1和問題4之後顯示3 ....直到問題3其正常工作... – fabs11
您需要的變量傳遞爲function.Try像這樣
function checkscore ($score){
if ($_SESSION['result'] == "Correct")
$score ++;
return $score;
}
//Function call example;
checkscore (1);
的說法你也可以試試這個,通過refrence
function checkscore (&$score){
if ($_SESSION['result'] == "Correct"){
$score ++;
return 'correct';
}else{
return 'wrong';
}
//Function call example;
$score = 1;
checkscore ($score);
echo $score;
通過這種方式,您將返回兩個值從一個函數會說正確或錯誤,參考變量也會更新分數。
不要初始化$得分變量,就像這樣:
function checkscore()
{
static $score; // Here without initialization
if (is_null($score)) {
$score = 0;
}
if ($_SESSION['result'] == "Correct") {
$score++;
}
return $score;
}
$_SESSION['result'] = 'Correct';
checkscore(); // 1
checkscore(); // 2
...
靜態變量被初始化一次甚至重新初始化不會影響變量的值,一個靜態變量只存在於本地函數作用域中,但在程序執行離開該作用域時不會丟失其值。
function checkscore()
{
static $score = 0;
if ($_SESSION['result'] == "Correct")
$score++;
return $score;
}
您的代碼檢查沒有問題您可能在調用部分或處理返回值時做錯了。
您需要傳遞變量作爲函數的參數。 –
srry即時通訊非常新的PHP ....可以üPLZ解釋我更清楚如果你不介意 – fabs11
變量只存在請求時存在。每個新請求都將創建新變量。執行後所有變量都將被終止。只有根據請求才能增加靜態變量。 –