Возьмите строки и затем ячейки из таблицы - PullRequest
0 голосов
/ 26 июня 2018

Я использую Simple HTML Dom Parser , чтобы получить таблицу (на картинке), а затем захватить каждую tr.Это выводит все элементы в строке в одну строку.

$contents = $html->find('div[class=product-table]', 0);
$titles = $contents->find('tr');

enter image description here

Как создать массив, который хранит данные в строках, но такжепозволяет мне выводить отдельные ячейки?Я хочу быть в состоянии сказать, что есть 7 ячеек подряд (это может быть гибким) и иметь возможность выводить каждую отдельную ячейку в строке в качестве переменных (мне нужно сделать с ними другие вещи).


<code>// Product Code Titles
$contents = $html->find('div[class=product-table]', 0);
$data = array();
$rows = $contents->find('tr');
$counter = 1;
foreach ($rows as $key_row => $row) {
    // process rows here
    foreach ($row->find('td') as $key_cell => $cell) {
      $field_key = "field_5ae0882f9d6f9";
      $data[] = array(
        "column_title" => strip_tags($cell->innertext),
      );
      $counter++;

        // process each cell on the current row iteration
        // or whatever you need to do in each cell (calculations and whatnot)
        // $data[] = then push it inside an array (you can prolly use the keys and use it in `$data`)
    }
} ?>
<pre>
<?php print_r($data); ?>

1 Ответ

0 голосов
/ 26 июня 2018

Точно так же, как я сказал в комментариях, обработайте первый цикл для строк, а для каждой строки - еще один foreach для каждой ячейки. Так что в основном вам нужно два.

Не так много, чтобы продолжить, так как у вас нет образца разметки, но вот идея:

$data = array();
$rows = $contents->find('tr');
foreach ($rows as $key_row => $row) {
    // process rows here
    foreach ($row->find('td') as $key_cell => $cell) {
        // process each cell on the current row iteration
        echo $cell->innertext;
        // or whatever you need to do in each cell (calculations and whatnot)
        // $data[] = then push it inside an array (you can prolly use the keys and use it in `$data`)
    }
}

Sidenote: Обратите внимание: если вы хотите, чтобы заголовок был пропущен, просто используйте счетчик и условие if с продолжением, тогда все готово.

...