【问题标题】:Sort a CSV file by first column 1 strictly using php or javascript严格使用 php 或 javascript 按第一列 1 对 CSV 文件进行排序
【发布时间】:2017-09-17 06:58:09
【问题描述】:

这是我使用 PHP 从 CSV 文件显示的表格

我想对它进行排序,使 m1 的所有行都排在第一位,然后是空行,然后是 m2,依此类推。

这是我用来将 CSV 文件显示为表格的代码。

<?php
$filename = basename(__FILE__, ".php");
$f = fopen("$filename.csv", "r");
while (($line = fgetcsv($f)) !== false) {
        echo "<tr>";
        foreach ($line as $cell) {
                echo "<td>" . htmlspecialchars($cell) . "</td>";
        }
        echo "</tr>\n";
}
fclose($f);
echo "\n</tbody></table></body></html>";
?>

【问题讨论】:

    标签: javascript php csv sorting


    【解决方案1】:

    您可以使用以下代码来呈现您的表格。它是这样工作的:

    1. 它首先从 CSV 文件中创建一个数据数组

    2. 然后它将第一列升序排序

    3. 遍历每一行并渲染表格

       $mdarray = array();
       $filename = basename(__FILE__, ".php");
       $f = fopen("$filename.csv", "r");
      
       while (($line = fgetcsv($f)) !== false) {
       {
          array_push($mdarray, $line);
       }
       fclose($f);
      
       foreach ($mdarray as $key => $row) {
          $names[$key]  = $row[0];
       }
      
       array_multisort($names, SORT_ASC, $mdarray);
       //array_multisort(array_column($mdarray, 0), SORT_ASC, $mdarray);//php version >=5.5
      
       foreach ($mdarray as $line) {
          echo "<tr>";
          foreach ($line as $cell) {
                  echo "<td>" . htmlspecialchars($cell) . "</td>";
          }
          echo "</tr>\n";
      
         echo "<hr>"; // blank line
      }
      

    【讨论】:

    • 非常感谢,但是调用未定义函数 array_column() 时出错,它根本不显示任何内容。
    • 你用的是哪个php版本?
    • 我已经更新了我的代码以支持旧版本的php
    • @Gaurav 请不要忘记将其标记为已接受,以便其他人将来可以从中获得帮助
    • while 语句后面的左括号是否必要?!
    猜你喜欢
    • 2011-11-25
    • 2018-05-24
    • 1970-01-01
    • 2014-12-02
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2021-09-04
    相关资源
    最近更新 更多