我有一个5x2 HTML表:http://jsfiddle.net/duxTU/
代码:
<?php
if(isset($_POST['submit'])) {
$contacts_array array(
$_POST["name1"] => $_POST['name2'],
$_POST["name3"] => $_POST['name4'],
$_POST["name5"] => $_POST['name6'],
$_POST["name7"] => $_POST['name8'],
$_POST["name9"] => $_POST['name10']);
$array_filtered=array_filter($contacts_array);
$arrayKeys = array_keys($array_filtered);
$arrayValues = array_values($array_filtered);
}
?>
已过滤数组以省略可能会陷入其中的空值。
现在,如何制作HTML表单显示值?我知道粘性表单,但由于我必须保持表单大小不变(5x2),我试图使用类似于以下的代码
<input type="text" value="<?php echo $arrayKeys[0]; ?> ">
<input type="text" value="<?php echo $arrayValues[0]; ?> ">
...分别为$ arrayKeys [4]和$ arrayValues [4]。
这为我提供了未定义的偏移量,例如$arrayKeys[5]
未设置,因为在提交前没有在相应的表单列中输入任何值。
这个问题的任何解决方案??
答案 0 :(得分:0)
如果您只是想显示值,foreach
会很有效:
foreach ($array_filtered as $k=>$v) {
echo "<input type='text' value='".$k."'>";
echo "<input type='text' value='".$v."'>";
}
foreach
遍历一个数组。 $k
是当前的关键。 $v
是当前值。
当然,这应该在您的表单HTML中。
答案 1 :(得分:0)
也许这对你有用:
<?php
function getPost($param){
return isset($_POST[$param])?$_POST[$param]:"";
}
?>
<form action="#" method="post">
<table>
<tr>
<td>Name</td><td>Age</td>
</tr>
<tr>
<td><input type="text" name="name1" value="<?= getPost("name1") ?>"></td>
<td><input type="text" name="name2" value="<?= getPost("name2") ?>"></td>
</tr>
<tr>
<td><input type="text" name="name3" value="<?= getPost("name3") ?>"></td>
<td><input type="text" name="name4" value="<?= getPost("name4") ?>"></td>
</tr>
<tr>
<td><input type="text" name="name5" value="<?= getPost("name5") ?>"></td>
<td><input type="text" name="name6" value="<?= getPost("name6") ?>"></td>
</tr>
<tr>
<td><input type="text" name="name7" value="<?= getPost("name7") ?>"></td>
<td><input type="text" name="name8" value="<?= getPost("name8") ?>"></td>
</tr><tr>
<td><input type="text" name="name9" value="<?= getPost("name9") ?>"></td>
<td><input type="text" name="name10" value="<?= getPost("name10") ?>"></td>
</tr>
<tr>
<td><input type="submit" value="submit" name="submit"></td>
</tr>
</table>
</form>
创建了getPost助手,因为我不想每次都要输入条件。
您可以过滤掉正在执行的任何其他表单处理的空值。