0

私はテーブルを持っています:コースとテーブル:セッション。- コースには複数のセッションが含まれる場合があります (たとえば、5 つのセッション)。もちろん、これらの5つのレコードとセッションを1つのレコード/配列に変換するには、(おそらくPHPで)何をしなければなりませんか? array_merge() と array_merge recursively() を試しましたが、成功しませんでした。

私が受け取った正確なデータ/行/レコード/配列が必要な場合は、投稿します。

ありがとう。

編集:

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つのアイテムになりたいです。それが理にかなっていることを願っています。ありがとう。

PS 何という素晴らしい編集者....

4

1 に答える 1

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)

お役に立てれば

于 2012-04-22T15:43:50.290 に答える