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