使用循环从POST设置变量和字符串


Setting variable and string from POST with loop

目前我有100个名为contact0到contact101的文本输入框。我正在尝试获取Post数据,并将每个字符串命名为自己。意味着$contact0 = $_POST['contact0'];一直到$contact101 = $_POST['contact101'];,必须有一种更简单的方法将它们设置在循环中或其他什么。总的来说,最终的结果是,我只希望在提交时,在文本框中输入的数据成为文本框的值。任何建议都会帮助我,我可能会因为我想要的结果而做错这件事。

for ($i = 0; ;$i++){
if($i < 101){
$contact.$i = $_POST['contact'].$i;
echo $contact.$i;
}
else{
break;
}
}
for ($i = 0; $i <= 101; $i++){
     ${"contact".$i}  = $_POST['contact'.$i];
     echo ${"contact".$i};
}

您可能需要考虑修改HTML表单。您可以将所有联系人分配给一个数组,然后用数组索引引用它们,而不是创建100个新变量。

HTML

<input type="text" name="contacts[]" value="Contact 1 name"/>
<input type="text" name="contacts[]" value="Contact 2 name"/>
// etc...

PHP

$contacts = $_POST['contacts'];
var_dump($contacts);
// prints array(0 => 'Contact 1 Name', 1 => 'Contact 2 Name'...

由于它现在是一个数组,您可以引用联系人,例如$contacts[34],并知道它将是一个有效的条目。

编辑

一个工作示例:

<?php
    if (isset($_POST['contacts'])) {
        $contacts = $_POST['contacts'];
        echo "<p>The contacts are below:</p>";
        print_r($contacts);
    } else {
        echo "<p>Please enter the contacts</p>";
    }
?>
<form method="post" action="">
    <?php for($x = 0; $x < 100; $x++): ?>
    <input type="text" name="contacts[]" value="<?php echo (isset($contacts[$x])) ? $contacts[0] : ''; ?>"/>
    <?php endfor; ?>
    <input type="submit" name="submit" value="submit"/>
</form>

编辑2

我现在已经将表单制作成一个循环,这意味着它将为我们创建所有联系人输入。除此之外,如果我们已经发布了表单,则每个字段都将具有正确的联系人值。

如果您不知道语法,echo isset($contacts[$x])) ? $contacts[$x] : '';是一个ternary operator,它是一行if/else语句。

也可以在这里进行测试:http://phpfiddle.org/api/run/ugb-cta