Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> генерация таблиц html средствам php 
:(
    Опции темы
hobbs
Дата 21.12.2014, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 9.3.2012

Репутация: нет
Всего: нет



Дан вот такой массив:
Код


Array
(
    [0] => Array
        (
            [name_channel] => Первый
            [image_channel] => images/logo_channels/P1-1.png
            [start_time] => 2014-12-26 07:00:00
            [name_telecast] => От праздника к празднику
        )

    [1] => Array
        (
            [name_channel] => Первый
            [image_channel] => images/logo_channels/P1-1.png
            [start_time] => 2014-12-26 08:00:00
            [name_telecast] => "V" значит Вендетта
        )

    [2] => Array
        (
            [name_channel] => Первый
            [image_channel] => images/logo_channels/P1-1.png
            [start_time] => 2014-12-26 09:00:00
            [name_telecast] => Без следа
        )

    [3] => Array
        (
            [name_channel] => Первый
            [image_channel] => images/logo_channels/P1-1.png
            [start_time] => 2014-12-26 10:00:00
            [name_telecast] => Фарго
        )

    [4] => Array
        (
            [name_channel] => Звезда
            [image_channel] => images/logo_channels/P1-5.png
            [start_time] => 2014-12-19 12:00:00
            [name_telecast] => Фарго
        )

)


Необходимо сгенерировать такие таблицы:
HTML
<table border="1">
   <tr>
      <td>logo</td>
      <td>name_channel</td>
   </tr>
   <tr>
      <td>start_time</td>
      <td>name_telecast</td>
   </tr>
   <tr>
      <td>start_time</td>
      <td>name_telecast</td>
   </tr>
   <tr>
      <td>start_time</td>
      <td>name_telecast</td>
   </tr>
</table>

PM MAIL   Вверх
Aliance
Дата 22.12.2014, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Код

<?php

$in = [
        [
            'name_channel' => 'Первый',
            'image_channel' => 'images/logo_channels/P1-1.png',
            'start_time' => '2014-12-26 07:00:00',
            'name_telecast' => 'От праздника к празднику',
        ],
        [
            'name_channel' => 'Первый',
            'image_channel' => 'images/logo_channels/P1-1.png',
            'start_time' => '2014-12-26 08:00:00',
            'name_telecast' => '"V" значит Вендетта',
        ],
        [
            'name_channel' => 'Первый',
            'image_channel' => 'images/logo_channels/P1-1.png',
            'start_time' => '2014-12-26 09:00:00',
            'name_telecast' => 'Без следа',
        ],
        [
            'name_channel' => 'Первый',
            'image_channel' => 'images/logo_channels/P1-1.png',
            'start_time' => '2014-12-26 10:00:00',
            'name_telecast' => 'Фарго',
        ],
        [
            'name_channel' => 'Звезда',
            'image_channel' => 'images/logo_channels/P1-5.png',
            'start_time' => '2014-12-19 12:00:000',
            'name_telecast' => 'Фарго',
        ],
];

$out = [];

foreach ($in as $channel) {
    if (!isset($out[$channel['name_channel']])) {
        $out[$channel['name_channel']] = [
            'image_channel' => $channel['image_channel'],
            'telecasts' => [],
        ];
    }

    $out[$channel['name_channel']]['telecasts'][] = [
        'name_telecast' => $channel['name_telecast'],
        'start_time' => $channel['start_time'],
    ];
}

var_dump($out);

PM MAIL WWW ICQ Skype   Вверх
whatisnot
Дата 29.12.2014, 20:02 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 14.12.2014

Репутация: 1
Всего: 2



Код

$tb = array();

array_walk($in, function($v) use(&$tb) {
    $v = (object)$v;
    if(!in_array($v->name_channel, $tb)) array_push($tb, $v->name_channel, $v->image_channel, $v->start_time, $v->name_telecast);
    else array_push($tb, $v->start_time, $v->name_telecast); 
});

$tb = '<table border=1>' . implode(array_map(function($v) {
    return '<tr><td>' .implode('</td><td>', $v) . '</td></tr>';
}, array_chunk($tb, 2))) . '</table>';

echo $tb;


PS. $v = (object)$v; - это ради того, чтобы не писать здесь скобки, кавычки по много раз.

В РНР 5.5.0 стала доступна удобная функция позволяющая выбрать необходмые колонки массива по индексу или ключу - array_column(). В более ранних версиях можно использовать аналог:

Код

function arrayColumn($a, $i) {
    return array_values(array_diff(array_map(function($v) use($i) {
        return $v[$i];
    }, $a), array(null)));
}


Для задач типа вашей такая может пригодится.

Это сообщение отредактировал(а) whatisnot - 29.12.2014, 23:20
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.