n00*_*der 2 php variables list
基本问题 - 我有一个带有提交按钮的文本区域,该按钮链接到变量$ListItem.
在页面的下方,我想打印$ListItem一次<li>,每次在文本区域输入新内容时,我想为它分配一个新变量($ListItem2也许?),然后将它打印在前一个变量下面.
使用我当前的代码,每次在文本区域中输入新字符串时,它都会替换现有变量:
<?php
$ListItem = $_POST["ListItem"];
?>
<form method="post" action="<?php echo $PHP_SELF;?>">
<textarea name="ListItem" cols=80 rows=6></textarea> <br />
<input type="submit" value="Submit"> <br />
</form>
<li><?php echo $ListItem; ?></li>
Run Code Online (Sandbox Code Playgroud)
我是否必须使用数据库?
您可以将其弹出到存储在会话中的数组:
$_SESSION["vars"][] = $_POST["ListItem"];
Run Code Online (Sandbox Code Playgroud)
这将通过未来的提交保留完整的历史记录.打印它们就像在会话数组中循环一样简单:
foreach ($_SESSION["vars"] as $var) {
echo "<p>{$var}</p>";
}
Run Code Online (Sandbox Code Playgroud)
记得在其他任何事情发生之前开始会话:
session_start();
Run Code Online (Sandbox Code Playgroud)
我的答案中的第一项是将另一个项目附加到数组上的示例.如果我们从一个空数组开始:
$myArr = array();
Run Code Online (Sandbox Code Playgroud)
我们可以使用以下语法添加新条目:
$myArr[] = "Foo";
$myArr[] = "Bar";
Run Code Online (Sandbox Code Playgroud)
我们的阵列现在有两个项目.这与执行此操作相同:
$myArr = array("Foo", "Bar");
Run Code Online (Sandbox Code Playgroud)
使用双括号方法是将更多项放入数组的快速方法,同时保留目前开始的内容.还有其他方法可以做到这一点,例如你可以使用这个array_push()功能:
array_push($myArr, "Foo");
Run Code Online (Sandbox Code Playgroud)
这与我们之前的示例完全相同,因此它没有提供太大的区别.现在回过头来看,我们注意到我们的数组存储在SESSION数组中.这是一个数组,可用于存储在用户访问您的网站时经常使用的数据.它通常是将奇怪的数据存储在数据库中并对每个请求进行调用的更好的替代方法.
同样,我们有一个数组:
$_SESSION["vars"] = array();
Run Code Online (Sandbox Code Playgroud)
基本上我们所做的就是在数组中设置一个数组,由关键的"vars"处理.关键很重要,因此我们可以在以后快速参考这些数据.回到我们的第一行代码,您现在可以更好地了解我们正在做的事情:
$_SESSION["vars"][] = $_POST["ListItem"];
Run Code Online (Sandbox Code Playgroud)
所以这一切都是将新值添加$_POST["ListItem"]到存储在$_SESSION["vars"]以后可以检索的数组中.