将文本框值存储在 php 数组中

Store textbox values in php array

所以基本上我让用户在我的第一个屏幕上输入一个数字。 这里是 test1.php,它生成用户之前输入的文本框的数量。这个数字是 $input

echo "<form action='test2.php' method='post'>";
for($i=1; $i<=$input; $i++)
{
     echo "Entry $i";
     echo "<input type='text' name='Names'>";
}
echo "<input type='submit' class='button' name='submit' value='submit'>";
echo "</form>";

然后我的 test2.php 应该打印所有输入的值,但它只打印出从 test1.php 输入的最后一个值。例如 $input 为 4,只打印第 4 个文本框中输入的文本,这是可以理解的,因为我不知道如何打印所有值。

$names=$_POST['Names'];
foreach($number as $num){
       echo $num;
}

是我给文本框起的名字有问题,还是别的什么? 非常感谢任何帮助。

只需创建一个名称分组属性,这样您就可以获得一组输入,而不仅仅是一个:

<input type='text' name='Names[]'>
                           // ^ this is important

旁注:

不知道是不是打错了,应该是$names而不是$number:

$names = $_POST['Names'];
foreach($names as $num){
       echo $num . '<br/>';
}

Sample Demo

您的问题是您为所有输入(在 test1.php 中)指定了相同的名称,因此当您尝试在 test2.php 上恢复它们​​时,您的 $_POST['Names'] 只是采用此名称的最后输入。

一个解决方案是为所有输入赋予不同的名称

在你的第一个文件中使用它:

echo "<form action='test2.php' method='post'>";
for($i=1; $i<=$input; $i++)
{
    echo "Entry $i";
    echo "<input type='text' name='".$i."'>";
}
echo "<input type='hidden' name='input' value='".$input."'>";
echo "<input type='submit' class='button' name='submit' value='submit'>";
echo "</form>";

在您的第二个文件中:

for($i=1; $i<=$_POST['input']; $i++){
    echo $_POST['$i'];
}
<form method="post" name="myform">
<input type="text" name="array[]" Value="101"/>
<input type="text" name="array[]" Value="102"/>
<input type="text" name="array[]" Value="103"/>
<input type="text" name="array[]" Value="104"/>
<input type="submit" name="submit" Value="submit"/>
</form>



if(isset($_POST['submit'])){

foreach($_POST['array'] as $myarray) {

    echo $myarray.'<br>';

}

输出

101
102
103
104