我需要从使用for循环创建的表单中获取post值作为数组,
这是我的观点
<?php for ($i=0;$i<5;$i++) {?>
<div class="row">
<div class="col-md-3">
<div class="form-group">
<label>Name</label>
<input name="<?php echo 'fname'.$i?>" class="form-control" type="text" />
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label>Surname</label>
<input name="<?php echo 'sname'.$i?>" class="form-control" type="text" />
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label>Date of Birth</label>
<input name="<?php echo 'dob'.$i?>" class="date-pick-years form-control" type="text" />
</div>
</div>
</div>
<?php }?>
<input type="submit" />
如何在控制器中获取这些后置值,我需要作为数组,例如i值为2表示我需要输出为
$array1=array('name'=>$this->input->post('name0')),'sname'=>$this->input->post('sname0')),'dob'=>$this->input->post('dob0'))
$array2=array('name'=>$this->input->post('name1')),'sname'=>$this->input->post('sname1')),'dob'=>$this->input->post('dob1'))
Total array =array($array1,$array2);
如何在控制器中循环获取所需的输出
答案 0 :(得分:0)
如果要获取语义上属于同一name
值的值数组,请在html中使用[]
:
<div class="col-md-3">
<div class="form-group">
<label>Name</label>
<input name="fname[<?=$i?>]" class="form-control" type="text" />
</div>
</div>
然后使用控制器中的常用$data = $this->input->post()
读取数据。数据应采用以下格式:
$post[
fname [
0 => 'name1',
1 => 'name2',
...
],
sname [
0 => 'sname1',
1 => 'sname2',
...
],
...
]
]
$resultArray = array();
for($i = 0; $i < <formlength>; $i++) {
$resultArray[$i]['fname'] = $post['fname'][$i];
$resultArray[$i]['sname'] = $post['sname'][$i];
...
}
答案 1 :(得分:0)
试试这个:
<?php for ($i = 0; $i < 5; $i++) { ?>
<div class="row">
<div class="col-md-3">
<div class="form-group">
<label>Name</label>
<input name="data[item<?php echo $i; ?>][<?php echo 'fname' . $i ?>]" class="form-control" type="text"/>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label>Surname</label>
<input name="data[item<?php echo $i; ?>][<?php echo 'sname' . $i ?>]" class="form-control" type="text"/>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label>Date of Birth</label>
<input name="data[item<?php echo $i; ?>][<?php echo 'dob' . $i ?>]" class="date-pick-years form-control" type="text"/>
</div>
</div>
</div>
<?php } ?>
你会得到:
$_POST['data'] = array (
'item0' =>
array (
'fname0' => '',
'sname0' => '',
'dob0' => '',
),
'item1' =>
array (
'fname1' => '',
'sname1' => '',
'dob1' => '',
),
'item2' =>
array (
'fname2' => '',
'sname2' => '',
'dob2' => '',
),
'item3' =>
array (
'fname3' => '',
'sname3' => '',
'dob3' => '',
),
'item4' =>
array (
'fname4' => '',
'sname4' => '',
'dob4' => '',
),
);
如果你想在变量中使用它们,你可以提取它:
$data = $this->input->post('data');
if(is_array($data)) {
extract($data);
if(isset($item1)) {
var_export($item1);
// it will contains:
// array (
// 'fname1' => '',
// 'sname1' => '',
// 'dob1' => '',
// );
}
}
答案 2 :(得分:0)
在您的HTML代码中使用此代码,而不是根据您的要求获得正确的结果。
<?php for ($i=0;$i<5;$i++) {?>
<div class="row">
<div class="col-md-3">
<div class="form-group">
<label>Name</label>
<input name="name[<?=$i?>][fname]" class="form-control" type="text" />
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label>Surname</label>
<input name="name[<?=$i?>][sname]" class="form-control" type="text" />
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label>Date of Birth</label>
<input name="name[<?=$i?>][dob]" class="date-pick-years form-control" type="text" />
</div>
</div>
</div>
<?php }?>
<input type="submit" />