Проблема в вызове ...
$cell[$o] = $parserCommons->findElementsByTag($table[0], 'td');
Таким образом, всегда используется $parserCommons
в качестве начальной точки для поиска тегов <td>
. Так что это всегда найдет один и тот же набор полей.
Если ваши строки в $materie
, то я думаю, что вам нужно
$cell[$o] = $materie[$o+1]->findElementsByTag($table[0], 'td');
, чтобы использовать текущую строку для начальной точки.