SimpleHTMLDom итерация по таблице - PullRequest
0 голосов
/ 29 ноября 2011

Я использую SimpleHTMLDOM для получения информации из моего школьного реестра. Проблема в том, что структура таблицы довольно сложна для разбора, и мне нужна помощь.

Таблица выглядит так: http://pastebin.com/xg3mRAHw

Код выглядит так: http://pastebin.com/gWW7WyDA

Результат выглядит так (включая то, как я хочу, чтобы результат выглядел!):

Текущий формат:

array
  3 =>
    array
      '28-11-2011' =>
        array
          0 => string '08.45-10.30 ' (length=12)
          1 => string 'CMD-1 HC interaction design' (length=27)
          2 => string 'CMD-1vt-p2.01 - CMD-1vt-p2.18 ' (length=30)
          3 => string 'OVk45' (length=5)
          4 => string 'J.P. van Leeuwen' (length=16)
          5 => string '10.30-12.15 ' (length=12)
          6 => string 'CMD-1 Training samenwerken' (length=26)
          7 => string 'CMD-1vt-p2.09 - CMD-1vt-p2.10 ' (length=30)
          8 => string 'SL433' (length=5)
          9 => string 'B. Hartman' (length=10)

Требуемый формат:

array
  3 =>
    array
      '28-11-2011' =>
        array
          0 =>
            array
              'time' => string '08.45-10.30 ' (length=12)
              'name' => string 'CMD-1 HC interaction design' (length=27)
              'group' => string 'CMD-1vt-p2.01 - CMD-1vt-p2.18 ' (length=30)
              'place' => string 'OVk45' (length=5)
              'teacher' => string 'J.P. van Leeuwen' (length=16)
          1 =>
            array
              'time' => string '10.30-12.15 ' (length=12)
              'name' => string 'CMD-1 Training samenwerken' (length=26)
              'group' => string 'CMD-1vt-p2.09 - CMD-1vt-p2.10 ' (length=30)
              'place' => string 'SL433' (length=5)
              'teacher' => string 'B. Hartman' (length=10)

Проблема в том, что я не понимаю, как я могу получить этот результат, используя (только) SimpleHTMLDOM. Я уверен, что я что-то здесь упускаю, потому что я близок к окончательной разметке массива. Последний шаг, чтобы он действительно появился, как будущий пример, это то, что я не могу заставить работать.

Может ли кто-нибудь дать мне несколько советов о том, как действовать и получить массив так, как я этого хочу? Я тоже смотрел на XSL, но сейчас это слишком сложно для меня.

1 Ответ

1 голос
/ 29 ноября 2011

Вам также нужно сегментировать массив tr.

$count = 0;
foreach ($table as $tr) {
...
   $output[$info['week']][$info['date']][$count] = array();
   $count++;
...
$output[$info['week']][$info['date']][$count][] = $td->innertext;

Теперь, что касается значений 'time', 'name', 'group' и т. Д., Я их не вижу нигде вxml, так что, я полагаю, вам нужно будет поддерживать внутренний счет при добавлении td->innertext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...