以fgetcsv的相反顺序显示行

时间:2016-10-24 20:36:57

标签: php

如何以相反的顺序显示行?

CSV文件:

  

列1;列2;栏3

     

小区1;小区1;小区1

     

小区2;小区2;小区2

     

CELL3; CELL3; CELL3

应该是这样的:

  

列1;列2;栏3

     

CELL3; CELL3; CELL3

     

小区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>';
}

提前致谢。

2 个答案:

答案 0 :(得分:1)

这里你需要做什么:而不是直接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;

答案 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));

最后反转数组。