2014-01-16 209 views
0

嗨我想了解會話變量,特別是使用它們與數組。在下面的示例代碼中,用戶輸入一個字母,我想將該提交添加到會話變量,以便下次用戶提交一封信時,我不會丟失前一個條目。PHP會話變量數組

因此,如果用戶輸入'e',數組顯示'e',並且如果用戶選擇'',那麼數組現在將顯示'e'和's'。這是我對PHP的第一次實驗,會話證明有點困難。任何人都可以幫助我理解如何去獲得我想要的結果,或者我在下面的代碼中出錯的地方?提前謝謝了。

<?php 
session_start(); 
function example() 
{ 
$_SESSION['lettersGuessed'] = array(); 
$userLetter = $_GET['input']; 
array_push($_SESSION['lettersGuessed'],$userLetter); 
print_r($_SESSION['lettersGuessed']); 
} 


if (strlen($_GET['input'])==1) { 
    if (ctype_lower($_GET['input'])) 
    { 
     echo "The user-submitted letter is lowercase.<br>"; 
     example(); 
    } 

    else 
    { 
     echo "Invalid submission<br>"; 
    } 
} 
?> 
<form action="" method="get"> 
<input name="input" value="Enter a letter!" /> 
<input type="submit" value="Submit" /> 
</form> 

回答

0

嘗試一下沒有array_push以更簡單的方式

有在例如函數的簡單變化。

下面是完整的代碼

<?php 
session_start(); 

function example() { 
    $userLetter = $_GET['input']; 
    $_SESSION['lettersGuessed'][] = $userLetter;  
    print_r($_SESSION['lettersGuessed']); 
} 

if (strlen($_GET['input']) == 1) { 
    if (ctype_lower($_GET['input'])) { 
     echo "The user-submitted letter is lowercase.<br>"; 
     example(); 
    } else { 
     echo "Invalid submission<br>"; 
    } 
} 
?> 
<form action="" method="get"> 
    <input name="input" value="Enter a letter!" /> 
    <input type="submit" value="Submit" /> 
</form> 

?> 
+0

這是非常感謝,幫助我瞭解更好更好 – Clustercuss

0

的問題是,您在example()開始行會話變量每次函數調用時重置爲空數組。

更新您的example()功能如下:

function example() 
{ 
    $_SESSION['lettersGuessed'][] = $_GET['input']; 
    print_r($_SESSION['lettersGuessed']); 
} 

值得慶幸的是,PHP是弱類型,所以您不必手動定義lettersGuessed數組。之後簡單使用[]將導致它作爲數組處理,然後使用=賦值運算符將其推入$_GET['input']

+0

嗨BenM,感謝試圖幫助我,我已經試過你的代碼,我仍然有每一次被改寫的數組的內容相同的問題用戶輸入一封新信件,還有其他想法? – Clustercuss

+0

我在我的服務器上試過這段代碼,它工作正常> http://ben-major.co.uk/labs/stack-overflow/test.php – BenM

+0

你服務器上的例子對我來說工作得很好,但是當我複製/粘貼你在這裏列出的示例函數,這對我來說並不奇怪。我想現在我明白我的問題的本質,所以非常感謝您的幫助 – Clustercuss