您好我正在尝试了解会话变量,特别是将它们与数组一起使用。在下面的示例代码中,用户输入一个字母,我想将该提交添加到会话变量,以便下次用户提交一封信时,我不会丢失之前的条目。
因此,如果用户输入“e”,则数组显示“e”,如果用户选择“s”,则数组现在将显示“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 :(得分:0)
问题是,每次调用函数时,example()
开头的行都会将会话变量重置为空数组。
更新example()
功能,如下所示:
function example()
{
$_SESSION['lettersGuessed'][] = $_GET['input'];
print_r($_SESSION['lettersGuessed']);
}
值得庆幸的是,PHP是松散类型的,因此您不必手动将lettersGuessed
定义为数组。之后只需使用[]
即可将其作为数组处理,然后使用=
赋值运算符将$_GET['input']
推入其中。
答案 1 :(得分: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>
?>