0

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

2 回答 2

2
for ($i = 0; $i <= 101; $i++){
     ${"contact".$i}  = $_POST['contact'.$i];
     echo ${"contact".$i};
}
于 2013-07-20T09:28:14.443 回答
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

于 2013-07-20T09:37:23.827 回答