2012-10-01 29 views
0

我創建喜歡使用主謀形式的遊戲。我的問題是,我有一個變量$的嘗試,我希望它增加每次用戶猜數字,但它似乎總是重置爲零,所以我的嘗試次數將始終顯示爲1.如果它有幫助這裏是代碼我使用:變量總是復位

$black = 0; 
$white = 0; 
$answer = array(1,2,3,4); 
$tries = array(); 
$attempts = 0; 
if ($process == true) 
{ 
$guess = str_split($_POST['guess']); 
if ($guess == $answer) 
{ 
    $black = 4; 
} else 
{ 
    for ($i=0;$i<4;$i++) 
    { 
     if ($guess[$i] == $answer[$i]) 
     { 
      $black = $black + 1; 
      $white = $white - 1; 
     } 
    } 
    $result = array(); 
    foreach ($guess as $val) 
    { 
     if (($key = array_search($val, $answer))!==false) 
     { 
      $result[] = $val; 
      unset($answer[$key]); 
     } 
    } 
    $count = count($result); 
    $white = $white + $count; 
} 
} 
$chance = implode(" ",$guess); 
$attempts += 1; 
$try = $attempts.".".$chance.".".$white.".".$black; 
array_push($tries, $try); 
+1

你的意思是跨請求重置?如果是這樣,你需要看看使用會話。 –

+0

你如何從一頁/嘗試傳遞下一個嘗試? HTML表單字段? – Dave

+0

其實這是在同一個php文件,是的,我使用的是HTML表單字段,方法「後」 –

回答

0

$attempts總是等於一個,因爲它不是一個循環中,它在最後聲明和剛剛添加一個到其現有的值(0)。你需要把它放在適當的地方(就在我認爲的最後{之上),它應該起作用。

此外,您似乎使用不同的方法添加一個,例如$black + 1$attempts += 1;。使用$ variable ++,更容易理解並阻止由此產生的任何錯誤。

+0

對不起,我應該在哪裏放呢? –

+0

我可能沒有完全理解你的代碼,所以當用戶進行了不正確的猜測,融入「$嘗試++」(和它在哪裏ATM中取出) – Andy

+0

實際上,反正是有每次增加嘗試的用戶點擊表單上的「提交」? –

1

你提交的每一個猜測的形式?如果是這樣你需要設置像一個會話變量:

$_SESSION['attempts'] += 1; 

只是爲了澄清的東西,它似乎缺少。 PHP腳本是在服務器上運行的代碼,用於生成文檔(通常爲html)以發送給客戶端。因此,它不是非常互動的請求。如果你想讓代碼在客戶端運行,你需要使用Javascript。 Javascript具有不需要在客戶端和服務器之間傳遞互聯網上的信息的好處。

+0

是的,我很抱歉,但在哪裏以及如何設置會話變量? –

+0

在地方,你有'$嘗試= 0;'它改爲'如果(isset($ _ SESSION [ '嘗試'])!)$ _SESSION [ '嘗試'] = 0;'然後使用上述無論你我的代碼有'$企圖+ = 1;'。它所做的就是在服務器上設置一個變量並保留該變量,以便可以在同一個會話中的任何頁面上使用它。儘管你應該在線閱讀會話,因爲你還需要在頁面的開頭加入'session_start()'。 – ajon