2014-01-16 93 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