2012-04-22 1 views
0

У меня есть таблица: Курсы и таблица: Сессии. Курс может иметь несколько сеансов (например, 5 сеансов). Что я должен сделать (возможно, в PHP), чтобы преобразовать эти 5 записей курса и сеансов в одну запись/массив? Я пробовал array_merge() и array_merge рекурсивно(), но безуспешно.пять строк/записей/массивов, возвращаемых innerJoin/leftJoin, как одна строка/запись/массив - php

Если вам нужны точные данные/строки/записи/массивы, которые я получаю, я разместил их.

Спасибо.

EDIT:

public function getCourses($dateFrom, $dateTo) 
{ 
$select = $this->_dbTableCourseTimetables->select()->setIntegrityCheck(false); 
$select->from(array('a' => 'course_timetables'), 'a.id_course_timetables'); 
$select->where('b.start_time >= ?', $dateFrom); 
$select->where('b.end_time <= ?', $dateTo); 
$select->where('b.isActive >= ?', 'yes'); 
$select->joinInner(array('b' => 'course_sessions'), 'a.id_course_timetables = b.id_course_timetables', 'b.id_course_sessions'); 
echo $select; 
return $this->_dbTableCourseTimetables->fetchAll($select)->toArray(); 
} 

Это мой Зенд запрос, который производит этот SQL:

SELECT a.id_course_timetables, b.id_course_sessions FROM course_timetables AS a INNER JOIN course_sessions AS b ON a.id_course_timetables = b.id_course_timetables WHERE (b.start_time >= '1332745200') AND (b.end_time <= '1333350000') AND (b.isActive >= 'yes')

Что, если я исполню ее. Он возвращает:

id_course | id_course_sessions 
--------- ----------------- 
303  533 
303  534 
303  532 
304  535 

И когда я прохожу через foreach(), он оказывает мне четыре предмета. Я на самом деле хочу быть двумя предметами, потому что курсы - всего два. Надеюсь, это имеет смысл. Благодарю.

P.S. какой невероятный редактор ....

+0

Может ли я увидеть ваш пример код? –

+0

@ DanielDimitrov - пожалуйста, переместите свой код в комментариях к актуальному вопросу, где они могут быть правильно отформатированы (четыре пробела перед каждой строкой). Затем удалите комментарии - сохраните их для читателей ':)'. – halfer

ответ

0

Вы можете выполнить такую ​​реализацию.

$array = array(); 

foreach($your_Result_array as $k => $v) { 
     if (empty($array[$k])) { 
     $array[$k] = array($v); 
     } else { 
     array_push($array[$k], array($v)); 
     } 
} 

var_dump($array); 

//Your array will be like [303] => array(534, 532, 533), [304] = array(535) 

Надеется, что это помогает

Смежные вопросы