我有一个表单,其中可以输入几行相同的几行,如下所示,
<input type="text" name="company[]"><input type="text" name="type[]">
<input type="text" name="company[]"><input type="text" name="type[]">
<input type="text" name="company[]"><input type="text" name="type[]">
现在我必须将这些字段输入到数据库中,因此我循环输入字段并且工作正常。
但我有一个问题:有时循环中的字段可能为空。即公司将拥有一个价值但不是类型。那么我怎样才能使循环在类似的键中输出空值:
Array(
company => array(
[0] => string0
[1] => string1
[2] => string2
)
type => array(
[0] =>
[1] => string1
[2] => string2
)
)
所以你可以看到第一个类型的键是空的,所以我怎么能实现呢,
我正在尝试这样做,但没有结果,
$postFields = array('company', 'type');
$postArray = array();
foreach($postFields as $postVal){
if($postVal == ''){
$postArray[$postVal] = '';
}
else {
$postArray[$postVal] = $_POST[$postVal];
}
}
感谢任何帮助,
答案 0 :(得分:2)
此HTML:
<input type="text" name="company[]"><input type="text" name="type[]">
将动态填充数组的键。我想你永远不会得到一个空的0
元素,只要提交了一个文本字段。相反,您最终会得到不匹配的数组长度,您将无法确定哪个数字被省略。
解决方案是在HTML中明确说明密钥,如下所示:
<input type="text" name="company[0]"><input type="text" name="type[0]">
<input type="text" name="company[1]"><input type="text" name="type[1]">
<input type="text" name="company[2]"><input type="text" name="type[2]">
现在,您可以循环遍历数组,如果未设置某个键,则可以将其设置为空字符串:
foreach( range( 0, 2) as $i) {
if( !isset( $_POST['company'][$i]))
$_POST['company'][$i] = "";
if( !isset( $_POST['type'][$i]))
$_POST['type'][$i] = "";
}