#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;