这是我第一次创建自己的网络服务(有人总是先为我做过),所以请耐心等待。
我发布了这个数组:
$data = array(
'user_id' => $this->post('user_id'),
'group_id' => $this->post('group_id'),
'child_id' => $this->post('child_id'), //will be nested array
'custom' => $this->post('custom'),
'time' => $this->post('time'),
'date' => $this->post('date')
);
我尝试使用以下内容创建一个嵌套数组:$this->post('child_id')
,因为用户可以一次发布多个child_id
。
然后我试图遍历child_id
,因为我需要将它们插入到mysql中:
for($i = 0; $i < sizeof($data['child_id']); $i++)
{
$result2 = $this->schedule_m->add_trans('transaction_schedule', $data, $result_id[0]['id']);
}
我应该怎么做,所以我的child_id
数组中可以有一个$data
数组? (嵌套数组)
如何迭代它?
更新: 我已经更新了上面的代码。
我使用advanced rest client
进行测试,我尝试在form
内容类型中发布类似内容:
child_id=1&user_id=1&group_id=1&custom=&time=17%3A17%3A00&date=&child_id=2
请注意,插入了两个child_id(最左侧和最右侧),但只插入了最后一个(最右侧)。
这是模型中的add_trans
:
function add_trans($table, $data, $schedule_id) {
$query = $this->db->insert($table, array('child_id' => $data['child_id'], 'schedule_id' => $schedule_id));
return $query;
}
非常感谢你的时间。
答案 0 :(得分:1)
甚至认为您在标记上将名称属性设置为child[]
,
您仍然需要将其称为:
'child_id' => $this->post('child_id')
它仍然会返回一个数组。
for($i = 0; $i < sizeof($data['child_id']); $i++) {
$result2 = $this->schedule_m->add_trans('transaction_schedule', $data, $result_id[0]['id']);
}
编辑:
看着你查询字符串,这似乎是罪魁祸首:
child_id=1&user_id=1&group_id=1&custom=&time=17%3A17%3A00&date=&child_id=2
^ same index , same index, same index, it will overwrite and you will get only `2`
如果你想将它们全部变成数组格式,你需要像这样设置它们
child_id[]=1&user_id=1&group_id=1&custom=&time=17%3A17%3A00&date=&child_id[]=2
^ it needs to be set like this
更新:
在你的模型中,如果你想要每行的每个id,那么你也可以在这种情况下循环:
function add_trans($table, $data, $schedule_id) {
foreach($data['child_id'] as $child_id) {
$query = $this->db->insert($table, array('child_id' => $child_id, 'schedule_id' => $schedule_id));
}
// return $this->db->insert_id();
return $query;
}
答案 1 :(得分:1)
当然不会起作用,它必须是
for($i = 0; $i < sizeof($data['child_id']); $i++)
{
$result2 = $this->schedule_m->add_trans('transaction_schedule', $data['child_id'][$i], $result_id[0]['id']);
}
因为你没有设置$ data ['child_id []']所以它不存在,键只是一个字符串或数字,它不验证或解析任何东西
答案 2 :(得分:1)
您不需要在帖子方法中提供child[]
。只给孩子,它将获得完整的数组你从视图发送什么
替换
'child_id' => $this->post('child_id[]')
与
'child_id' => $this->post('child_id')