Создание массива для использования в CodeIgniter Activerecord input_batch - PullRequest
0 голосов
/ 03 апреля 2012

Я пытаюсь сделать массив, который подходит для активной записи Codeignitors input_batch.Я запрашиваю таблицу ссылок, поэтому у меня есть только два столбца - 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'
   )
);

(Haven; не изменяйте это, я просто цитирую это здесь), нокогда я var_dump ($ datas) я получаю ноль.Так что моя логика где-то просачивается.

Спасибо за помощь, Лерон

1 Ответ

0 голосов
/ 04 апреля 2012
$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;

Вот как бы я это сделал.Нет смысла использовать «сложные» хитрости preg_match, когда вы можете использовать explode().

Если это все еще не работает, убедитесь, что $ str и $ data ['id'] допустимы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...