2012-04-22 45 views
0

我有表:課程和表:會話。 А課程可能有多個課程(例如5個課程)。我需要做什麼(可能用PHP)將這5個課程和會話記錄轉換爲一個記錄/數組?我已經嘗試了array_merge()和array_merge遞歸(),但沒有成功。由innerJoin/leftJoin返回的五行/記錄/數組作爲一行/記錄/數組 - php

如果您需要我接收的確切數據/行/記錄/數組,我會發布它們。

謝謝。

編輯:

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(); 
} 

這是我的Zend查詢,產生這個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

我可以看到你的示例代碼? – 2012-04-22 12:40:33

+0

@DanielDimitrov - 請將註釋中的代碼移到實際問題中,在那裏可以正確格式化(每行前四個空格)。然後刪除評論 - 讓讀者閱讀':)'。 – halfer 2012-04-22 15:22:40

回答

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) 

希望這有助於