2012-04-22 13 views
0

私はテーブルを持っています:コースとテーブル:セッション。 Аコースは複数のセッションを持つ場合があります(例えば5セッション)。私が(おそらくPHPで)これらの5つのレコードをコースやセッションを1つのレコード/配列に変換するにはどうすればいいですか?私はarray_merge()とarray_mergeを再帰的に()試みたが成功しなかった。innerJoin/leftJoinによって1行/レコード/配列として返される5行/レコード/配列 - 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を生成し、私のZendのクエリ、次のとおりです。私はそれを実行した場合

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()をループするとき私は4つのアイテムをレンダリングしています。私は実際に2つの項目になりたいです。なぜなら、コースは2つしかないからです。希望は意味をなさない。ありがとう。

P.S.どのような素晴らしいエディタ....

+0

を助け、私はあなたのサンプルコードを見てもいいですか? –

+0

@DanielDimitrov - コメントであなたのコードを実際の質問に移動してください。ここで、正しい形式(各行の前に4つのスペース)を入れることができます。次に、コメントを削除します - あなたの読者のために読むことができるように ':)'。 – 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) 

希望これは

関連する問題