Код (Text): public function exportWatchingHoursPDF($channels, $from, $to, $timeFrom, $timeTo, $device_id, $group_name) { $pdf = tmvc::instance()->controller->export->createPDF('Channels List'); // Add some data $test=$from !== null ? $from . ' ' . $timeFrom : substr($this->db->query_one('select min(start_time) from log')['min(start_time)'], 0, 10) . ' ' . $timeFrom; $pdf->Cell(50,10,'From', $from !== null ? $from . ' ' . $timeFrom : substr($this->db->query_one('select min(start_time) from log')['min(start_time)'], 0, 10) . ' ' . $timeFrom); $pdf->writeHTML($test); $pdf->Cell(50,10, 'To:'); $test2=$to !== null ? $to . ' ' . $timeTo : substr($this->db->query_one('select max(end_time) from log')['max(end_time)'], 0, 10) . ' ' . $timeTo; $pdf->writeHTML($test2); $pdf->Cell(50,10,'Device ID:'); $pdf->writeHTML($device_id); $pdf->Cell(50,10,'Group:'); $pdf->writeHTML($group_name); $html=''; $column = 1; $row = 0; $i=0; $w=0; foreach ($channels->channels as $channel) { $key = array_search($channel, $channels->channels); if (array_key_exists($key, $channels->data)) { $data = $channels->data[$key]; $html.='<table><tr><td>'.$channel.'</td></tr></table>'; foreach ($data as $value) { $html.='<table>'; $html.='<tr>'; $cTime = substr($value->x, strpos($value->x, ' ') + 1, 8); if (strtotime($cTime) >= strtoTime($timeFrom) && strtotime($cTime) <= strtotime($timeTo)) { for ($key = 1;$key<=4;$key=$key+1) { if ($key%4==0) { // $html.='<br>'; } $html.='<td></td><td>'.$cTime.'</td>'; // $html.='<td>'.$value->y.'</td>'; } $html.='</tr>'; $html.=('</table>'); $row++; } } $column++; $row = 0; } } $pdf->writeHTML($html); $pdf->Output('WatchingHours.pdf', 'D'); } Информация выводится в пдф. Канал $channel, время просмотра $cTime и кол-во просмотров $value->y. Нужно чтобы все это добро выводилось в несколько таблиц. Так как $cTime может быть много (от 00:00:00 до 23:59:59). $channel это строки, а $cTime столбцы. должно быть примерно так на выходе: .................... 00:00:00 00:01:00 00:02:00 Канал 1 Канал 2 Канал 3 ..................... 00:03:00 00:04:00 00:05:00 Канал 1 Канал 2 Канал 3 Т.е. надо как-то частями обработать массив