如何在CodeIgniter中将POST数据转换为数组?其中POST项目是数组。

5
在CodeIgniter中,我尝试从共享相同名称的表单输入中实现批量更新。但是不知道如何将POST数据输入到一个数组中。该表单的简化视图如下所示:
<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 函数中进行硬编码测试,已经可以正常工作。那么我该如何将 POST 数据存入到一个数组中呢?

2个回答

13
$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]);
}

好的,太棒了@Naveed! - gumuruh

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);

注意:在我的示例中,我没有展示任何输入数据验证/清洗步骤。在处理它之前,您可能需要验证输入数据是否存在、格式是否正确等。


完全正确。只需按照CodeIgniter格式编写代码: "$ids = $this->input->post('id');" 我相信这样就可以了。 - Zarathuztra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接