正在创建用于CodeIgniter Activerecord input_batch的数组


Creating array for use in CodeIgniter Activerecord input_batch

我正在尝试制作一个适合Codeignitors input_batch活动记录的数组。我正在查询一个Link表,所以我只有两列——user_id和group_id,因为我只插入某个用户的信息,所以user_id每次都是相同的,我只需要更改group_id。

以下是我所做的:

 $str = $dataGroups['groups'];
 preg_match_all('/[0-9]/', $str, $matches);

在这一部分,我只获取组的信息,这些信息以显示为"1,2,3,4…"的数字的形式存在,并且只获取外键"group_id"的值

之后,我所做的就是创建一个数组,我将用于input_batch记录,这样做:

$count = count($matches[0]);
  $datas = array();
    for ($i = 0; $i < $count; ++$i)
    {
    $datas[] = array("user_id"=>$data['id'],"group_id" => $matches[0][$i]);
    }
  return $datas;

这里$data['id']是user_id,对于所有元素都应该相同。最后,我必须获得与CI教程中所示相同的结构(我想至少是这样),即:

$data = array(
   array(
      'title' => 'My title' ,
      'name' => 'My Name' ,
      'date' => 'My date'
   ),
   array(
      'title' => 'Another title' ,
      'name' => 'Another Name' ,
      'date' => 'Another date'
   )
);

(我没有修改它,我只是在这里引用它),但当我var_dump($data)时,我会得到null。所以我的逻辑在某处泄漏。

谢谢你的帮助Leron

$str = $dataGropus['groups']; //  comma separated list
$arr_groups = explode(',', $str); // split the string into an array based on the comma
$datas = array(); // initiate param, not really necessary in PHP, just for clarity's sake
$user_id = $data['id'];
foreach($arr_groups as $group_id)
{
    $arr_temp = array("user_id" => $user_id, "group_id" => $group_id);
    array_push($datas, $arr_temp); // you could use $datas[] = $arr_temp, but I like array_push
}
return $datas;

以下是我的做法。当你可以使用explode()时,没有理由使用"复杂"的赛前技巧。

如果这仍然不起作用,请确保$str和$data['id']有效。