如何在CodeIgniter中将数据发布到数组中?帖子项目是数组

时间:2013-11-29 20:18:10

标签: php arrays codeigniter

在CodeIgniter中,我正在尝试从共享相同名称的表单输入完成批量更新。但不知道如何将数据发布到数组中。表格的简化视图如下:

<input name="id[]" value="1"/><input name = title[] value="some-title"/><input name     ="sort_order[]" value="1"/>

<input name="id[]" value="2"/><input name = title[] value="some-tuttle"/><input name="sort_order[]" value="2"/>

<input name="id[]" value="3"/><input name = title[] value="some-turtle"/><input name="sort_order[]" value="3"/>

在我的控制器中我现在有这个:

function set_sort_order(){
    $data = array(
        array('id' => 1,'sort_order' => 14),
        array('id' => 2,'sort_order' => 5),
        array('id' => 3,'sort_order' => 9)
    );
    $this->db->update_batch('press_releases', $data, 'id');//works!
    $this->load->view(pr_listing);
}

该数组是硬连线的,用于在input_batch函数中进行测试,该函数正在运行。那么如何将后期数据转换为数组呢?

2 个答案:

答案 0 :(得分:10)

$id = $this->input->post('id');
$sort_order = $this->input->post('sort_order');
$data = array();
foreach($id as $key=>$val)
{
  $data[] = array('id'=>$val,'sort_order'=>$sort_order[$key]);
}

答案 1 :(得分:5)

通过使用括号表示法(即fieldname[])命名输入字段的方式,将导致PHP自动将这些字段中的数据填充到数组中。简单访问它们如:

$ids = $_POST['id'];
$titles = $_POST['title'];
// etc.

您可以轻松地将这些组合成一个多维数组

$final_array = array();
$length = count($ids);
for($i = 0; $i < $length; $i++) {
    $final_array[$i]['id'] = $ids[$i];
    $final_array[$i]['title'] = $titles[$i];
    // etc.
}
var_dump($final_array);

注意:我的示例中没有显示任何输入数据验证/清理步骤。您可能希望在使用之前验证输入数据是否存在,格式是否正确等。