$_POST 用于添加新输出


$_POST foreach to add new outputs

标题可能不是很清楚。所以这是我的代码:

<form method="post" action="">
<input type="text" name="value">
<input type="submit">
</form>
<?php
if (is_array($_POST['value'])) {
    foreach ($_POST['value'] as $k) {
    echo "" . $k . "<br>";
    $k++;
    }
} else {
echo $_POST['value'] . " is not an array";
} ?>

本质上,我想做的是输入一个字符串,让我们说"Hello"。我希望浏览器输出字符串"Hello",然后我将能够输入另一个字符串"World"。然后继续输入字符串,让浏览器像这样一个接一个地拥有字符串......

你好
世界
等。。。

提前谢谢你!

您需要使用类似 PHP 会话的东西来存储发布时的值,然后在循环中逐个输出所有值。

<form method="post" action="">
<input type="text" name="value">
<input type="submit">
</form>
<?php
session_start();
if(array_key_exists('value',$_POST)){
    $_SESSION['values'][] = $_POST['value'];
}
if(count($_SESSION['values'])){
    foreach($_SESSION['values'] as $value){
        echo $value.'<br>';
    }
}

您必须发布所有数据,而不仅仅是要保存的新元素,因为 php 不会永久存储$_POST

<form method="post" action="">
<input type="text" name="value[]" />
<?php
if (is_array($_POST['value'])) {
    foreach ($_POST['value'] as $k) {
    echo '<input type="hidden" name="value[]" value="'.$k.'">;
}
?>
<input type="submit">
</form>
<?php
if (is_array($_POST['value'])) {
    foreach ($_POST['value'] as $k) {
        echo "" . $k . "<br>";
    }
} else {
    echo $_POST['value'] . " is not an array";
} ?>

另一种方法是序列化$_POST,但将其序列化为隐藏输入,并在发送表单后将其取消序列化。

考虑使用会话:

<form method="post" action="">
<input type="text" name="value">
<input type="submit">
</form>
<?php
session_start();
$_SESSION['words'][] = $_POST['value'];
foreach ($_SESSION['words'] as $k) {
    echo "" . $k . "<br>";
}
?>