suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Sortieren Sie das PHP-Array elementweise in der foreach-Schleife

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粉567281015P粉567281015236 Tage vor395

Antworte allen(2)Ich werde antworten

  • P粉373596828

    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 ''.$line[0].'';
        echo ''.$line[1].'';
        echo ''.$line[2].'';
        echo '' . PHP_EOL;
    }

    在线运行 PHP

    Antwort
    0
  • P粉897881626

    P粉8978816262024-04-01 00:24:30

    您可以仅使用两个 for 循环来实现它。

    
    ';
        echo '';
        echo '';
        echo '';
        echo '';
    }
    
    ?>
     
    ID TEXT CATEGORY
    '.$id.''.$text.''.$category.'

    Antwort
    0
  • StornierenAntwort