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

时间:2013-07-20 09:21:46

标签: php javascript

目前我有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;
}
}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

您可能需要考虑修改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