Отображать строки в обратном порядке fgetcsv

#php

#php

Вопрос:

Как мне отобразить строки в обратном порядке?

CSV-файл:

столбец 1; столбец 2; столбец 3

ячейка1;ячейка1;ячейка1

ячейка2;ячейка2;ячейка2

ячейка3;ячейка3;ячейка3

Это должно выглядеть следующим образом:

столбец 1; столбец 2; столбец 3

ячейка3;ячейка3;ячейка3

ячейка2;ячейка2;ячейка2

ячейка1;ячейка1;ячейка1

Код:

 if (($handle = fopen($path, 'r')) !== FALSE)
{   
    echo '<table class="table table-striped table-bordered"><thead>';  
    // Get headers
    if (($data = fgetcsv($handle, 1000, ';')) !== FALSE)
    {
        echo '<tr><th>'.implode('</th><th>', $data).'</th></tr>';
    }
    echo '</thead><tbody>';
    // Get the rest
    while (($data = fgetcsv($handle, 1000, ';')) !== FALSE)
    {
        echo '<tr><td>'.implode('</td><td>', $data).'</td></tr>';
    }
    fclose($handle);
    echo '</tbody></table>';
}
  

Заранее спасибо.

Комментарии:

1. опубликовал этот комментарий в качестве ответа

Ответ №1:

Сначала соберите

 $collect = array();
while (($data = fgetcsv($handle, 1000, ';')) !== FALSE)
{
  $collect[]= '<tr><td>'.implode('</td><td>', $data).'</td></tr>';
}
echo implode(PHP_EOL,array_reverse($collect));
  

Переверните массив в конце.

Ответ №2:

Вот что вам нужно сделать: вместо прямого echo ввода строки — сохраните ее в переменной:

 // Get the rest
$rest = '';
while (($data = fgetcsv($handle, 1000, ';')) !== FALSE)
{
    // main trick here - add every new row BEFORE old ones
    $rest = '<tr><td>'.implode('</td><td>', $data).'</td></tr>' . $rest;
}
// echo gathered data
echo $rest;