Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话变量数组_Php_Session_Session Variables - Fatal编程技术网

PHP会话变量数组

PHP会话变量数组,php,session,session-variables,Php,Session,Session Variables,嗨,我正在尝试理解会话变量,特别是在数组中使用它们。在下面的示例代码中,用户输入一封信,我想将该提交添加到会话变量中,以便下次用户提交一封信时不会丢失上一条 因此,如果用户输入“e”,数组将显示“e”,如果用户选择“s”,那么数组现在将显示“e”和“s”。这是我第一次使用PHP进行实验,事实证明会话有点难以理解。谁能帮助我理解如何获得我想要的结果,或者我在下面的代码中哪里出错了?非常感谢 <?php session_start(); function example() { $_SESSI

嗨,我正在尝试理解会话变量,特别是在数组中使用它们。在下面的示例代码中,用户输入一封信,我想将该提交添加到会话变量中,以便下次用户提交一封信时不会丢失上一条

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

问题在于,示例开头的一行在每次调用函数时都将会话变量重置为空数组

更新示例函数,如下所示:

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

谢天谢地,PHP是松散类型的,所以您不必手动将字母定义为数组。之后简单地使用[]将使其作为数组处理,然后使用=assignment操作符将$\u GET['input']推入其中。

以更简单的方式尝试不使用数组的情况

示例函数中有一个简单的更改

下面是完整的代码

<?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>

?>

嗨,BenM,谢谢你帮我,我已经试过你的代码了,但我仍然遇到同样的问题,每次用户输入新字母时数组的内容都会被覆盖,还有其他想法吗?我在我的服务器上试过这段代码,效果很好>你服务器上的示例对我也很好,但是,当我复制/粘贴您在这里列出的示例函数时,奇怪的是,它对我不起作用。我想我现在明白了我的问题的本质,所以非常感谢你的帮助谢谢,很高兴它为你解决了。如果答案有帮助,你可能会接受。而不是接受一个小时后贴出的相同答案…这是非常感谢,帮助我更好地理解