如何从使用codeigniter中的循环创建的表单中获取post值作为数组

时间:2016-05-27 19:17:00

标签: php forms codeigniter loops post

我需要从使用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);

如何在控制器的循环中得到这个以获得所需的输出第一个数组值作为第一个循环第二个数组值作为第二个循环......等等

1 个答案:

答案 0 :(得分:1)

我刚刚更改了输入的名称:

vector< vector<data> > vec;

提交表单后的结果$ _POST数组是:

<form method="POST" action="">
 <?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 'people['.$i.'][fname]'?>" class="form-control"
                    type="text" />
            </div>
        </div>
        <div class="col-md-3">
            <div class="form-group">
                <label>Surname</label> <input
                    name="<?php echo 'people['.$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="<?php echo 'people['.$i.'][dob]'?>"
                    class="date-pick-years form-control" type="text" />
            </div>
        </div>
    </div>

        <?php }?>

        <input type="submit" />
</form>

现在您可以使用以下方式循环控制器:

array(1) {
  ["people"]=>
  array(5) {
    [0]=>
    array(3) {
      ["fname"]=>
      string(5) "James"
      ["sname"]=>
      string(4) "Bond"
      ["dob"]=>
      string(10) "22.01.1950"
    }
    [1]=>
    array(3) {
      ["fname"]=>
      string(4) "Jack"
      ["sname"]=>
      string(6) "Sparow"
      ["dob"]=>
      string(10) "08.05.1970"
    }
    [2]=>
    array(3) {
      ["fname"]=>
      string(0) ""
      ["sname"]=>
      string(0) ""
      ["dob"]=>
      string(0) ""
    }
    [3]=>
    array(3) {
      ["fname"]=>
      string(0) ""
      ["sname"]=>
      string(0) ""
      ["dob"]=>
      string(0) ""
    }
    [4]=>
    array(3) {
      ["fname"]=>
      string(0) ""
      ["sname"]=>
      string(0) ""
      ["dob"]=>
      string(0) ""
    }
  }
}

或你的包装(我不确定)

$ arr_res = $ this-&gt; input-&gt; post('people');

我希望这会有所帮助。

良好做法:不要使用与函数名称相同的名称vars(特别是在php中) - $ array = array(...)等。 $ arr_res(包含结果的数组)或$ people,$ people_arr。