Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Помогите сформировать массив для JSON


Автор: Evgen11 6.2.2014, 23:43
Здравствуйте. Вот всю голову сломал. Как можно сделать такой массив.
Допустим у меня есть выборка из БД. Например:
Код


$col ='id, title, price, sale';
$q = $this->db->query("SELECT ".$col." FROM table LIMIT 25");



И вот как можно сформировать такой массив в цикле.

Код

foreach($q->result() as $r)
{
$arj[] = array(
      'id' => $r->id,
      'title' => $r->id,
      'price' => $r->id,
      'sale' => $r->id,
);
}


Трудность в том что в переменной $col в разных местах могут быть разные столбцы.
Помогите пожалуйста.

Автор: baldina 7.2.2014, 00:54
Код

$columns = array ('id', 'title', 'price', 'sale');
$q = $this->db->query("SELECT ".implode(',',$columns)." FROM table LIMIT 25");
...
foreach($q->result() as $r)
{
   foreach ($columns as $col)
      $res[$col] = $r->$col;
  $arj[] = $res;
}
// или проще
foreach($q->result() as $r)
  $arj[] = (array)$r;


а вообще что такое $this->db? наверняка есть способ сразу получить в виде массива

Автор: Evgen11 7.2.2014, 01:59
baldina, Понял, спасибо! 
Первый вариант конечно я сам делал - но, не красиво как то smile

А про второй пример.
Как я сам не догадался что $r это и есть уже массив с ключами в виде столбцов. 
Только не понял про (array) перед $r что это значит?

А $this->db - это класс абстракции БД в Codeigniter

Автор: baldina 7.2.2014, 09:37
Цитата(Evgen11 @  7.2.2014,  01:59 Найти цитируемый пост)
про (array) перед $r

преобразование к типу array
если $r объект, в массиве будут ключи соответствующие именам членов класса

Автор: krypt3r 11.2.2014, 06:07
Цитата
foreach($q->result() as $r)

result_array(), не?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)