Heim > Fragen und Antworten > Hauptteil
Ich verwende PHP, um auf einige in einer Textdatei enthaltene Daten zuzugreifen.
Hier ist ein Beispiel einer Textdatei (myfile.txt) – jede Zeile enthält drei Felder, getrennt durch ||
:
4e84||some text||category A f17b||words words||category B f7ac||some more text here||category B 8683||text text||category C b010||more text||category A fcc4||more text||category B we47||more text||category C 08ml||more text||category A
Dies ist der PHP-Code, den ich verwende, um den Inhalt einer TXT-Datei in einer einfachen HTML-Tabelle anzuzeigen. Ich greife auf die Datei zu und durchlaufe jede Zeile, um die drei Teile zu extrahieren:
<?php $lines = file("myfile.txt"); ?> <table> <thead> <tr> <th>ID</th> <th>TEXT</th> <th>CATEGORY</th> </tr> </thead> <tbody> <?php foreach ($lines as $line) { list($id,$text,$category) = explode('||', $line); echo '<tr>'; echo '<td>'.$id.'</td>'; echo '<td>'.$text.'</td>'; echo '<td>'.$category.'</td>'; echo '</tr>'; } ?> </tbody> </table>
Ich muss die Zeilen basierend auf dem dritten Feld (Kategorie) sortieren, damit Einträge für die Kategorie A, B, C angezeigt werden.
Ich habe versucht, den Befehl sort()
innerhalb einer foreach-Schleife zu verwenden, aber ohne Erfolg.
Irgendwelche Ideen?
P粉3735968282024-04-01 09:13:55
您可以使用下一种方法:
$split_lines = []; // first - split lines and put them into array foreach ($lines as $line) { $split_lines[] = explode('||', $line); } // sort array by function usort($split_lines, fn($a,$b)=>$a[2]<=>$b[2]); // show array as table foreach ($split_lines as $line) { echo ''; echo ' ' . PHP_EOL; }'.$line[0].' '; echo ''.$line[1].' '; echo ''.$line[2].' '; echo '
P粉8978816262024-04-01 00:24:30
您可以仅使用两个 for 循环来实现它。
ID | TEXT | CATEGORY | '.$id.' | '; echo ''.$text.' | '; echo ''.$category.' | '; echo ''; } ?>
---|