PHP会话变量数组

时间:2014-01-16 13:15:49

标签: php session session-variables

您好我正在尝试了解会话变量,特别是将它们与数组一起使用。在下面的示例代码中,用户输入一个字母,我想将该提交添加到会话变量,以便下次用户提交一封信时,我不会丢失之前的条目。

因此,如果用户输入“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>

2 个答案:

答案 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>

?>