严格使用php或javascript按第一列第1列对CSV文件进行排序

This is my table which I am displaying using PHP from a CSV file

1

I want to sort it such that all rows of m1 come first, then a blank line, then m2 and so on.

This is my code which i use to display the CSV file as a table.

<?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>
";
}
fclose($f);
echo "
</tbody></table></body></html>";
?>

You can use below code to render your table. This is how it works:

  1. It creates a data array first form the CSV file

  2. then it sorts the first column ascending order

  3. loop through each line and render table

     $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>
    ";
    
       echo "<hr>"; // blank line
    }