Codeigniter:将数组从视图传递到控制器


Codeigniter: Pass array of arrays from view to controller

我有一个数组数组,我在视图中循环查看这些数组,以将它们显示在表中,我还有一个确认按钮,单击该按钮可以将这些表数据存储在数据库中。我的问题是,如何将这个数组数组从视图传递到我的控制器,以便继续存储到数据库?

我尝试过使用一个表单,并使用json_encode()将其作为post数据传递,以将数组转换为字符串,但没有成功。我收到一个错误

消息:json_decode()期望参数1为字符串,给定的数组

我可以以某种方式将数组变量传递给输入字段的点击函数吗?

谢谢。

您可以在url字符串中传递数组,如下所示:

?arr[]=val1&arr[]=val2 //pass as the url param
//in controller
var_dump($_GET["arr"]);
//result should be
array(2) { [0]=> string(4) "val1" [1]=> string(4) "val2" }

我找到了问题的解决方案。以下是对我有效的方法。我使用将数组数组作为字符串值传递到隐藏的输入字段中

json_encode($array)

但问题是我的钥匙被双重报价,结果

value="<?php echo json_encode($array);?>"

正在崩溃。。。

解决方案是转义字符,所以我不得不用替换上面的行

value="<?php echo htmlspecialchars(json_encode($array));?>"

在控制器中,我必须使用以下行从json获取数组

$dataJson = $this->input->post('array');
$dataArray = json_decode(htmlspecialchars_decode($dataJson), true);

感谢大家的回答!