在CodeIgniter中,我正在尝试从共享相同名称的表单输入完成批量更新.但不知道如何将数据发布到数组中.表格的简化视图如下:
在我的控制器中,我现在有这个:
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函数中进行测试,该函数正常工作.那么如何将后期数据放入数组呢?
$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]); }
只是本质上使用括号表示法命名输入字段的方式(即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);
注意:我的示例中没有显示任何输入数据验证/清理步骤.您可能希望在使用之前验证输入数据是否存在,格式是否正确等.