2012-04-10 3 views
0

Ich habe 2 Sätze Code, die beide auf eigene Faust, aber ich muss sie beide kombinieren, und nicht in der Lage zu haben TU es.PHP: kombinieren Sie zwei Sätze von Code in einen (um Anzeige Textdatei in einer bestimmten Art und Weise zu erreichen)

Das Endergebnis sollte sein, Zeile für Zeile eine Textdatei alphanumerisch mit dem Array # anzuzeigen (daher sollten die Array-Nummern am Ende jeder Zeile angezeigt werden).

erstes Stück CODE

<?php 
$filename="users.txt"; 
$lines = array(); 
$file = fopen($filename, "r"); 

while(!feof($file)) { 
    $lines[] = fgets($file,4096); 
} 

natcasesort($lines); 
$text = implode("<br />", $lines); 
print_r($text); 

fclose ($file); 
?> 

zweites Stück CODE

<?php 
$lines = file('users.txt'); 
foreach ($lines as $line_num => $line) 
{ 
print "<font color=red>Line #{$line_num}</font> : " . $line . "<br />\n"; 
} 
?> 
+0

Haben Sie versucht, die Variablennamen zu ändern? -_- – Matthematics

Antwort

0

Es gibt zwei einfache Möglichkeiten, dies zu tun. Dieser wird nur für PHP arbeiten> = 5.4.0:

$lines = file('users.txt'); 
uasort($lines, 'strnatcasecmp'); // natcasesort that preserves keys 

// the loop is the same 

See it in action:

$lines = file('users.txt'); 
asort($lines, SORT_NATURAL | SORT_FLAG_CASE); // natcasesort that preserves keys! 

foreach ($lines as $num => $line) { 
    printf("%s (line #%d)<br>", $line, $num); 
} 

Wenn eine frühere Version verwenden, können Sie den gleichen Effekt mit uasort und strnatcasecmp erreichen.

In beiden Fällen besteht die Idee darin, eine Sortierfunktion zu verwenden, die die Indexverknüpfung beibehält, so dass sie nach dem Sortieren der Zeilen durch ihren ursprünglichen Schlüssel indiziert werden (die Zeilennummer in der Datei). Sowohl usort als auch uasort tun dies; uasort können Sie die Sortiervergleichsfunktion selbst angeben, während usort nur ein paar eingebaute Optionen erlaubt (die natürliche Sortierung in PHP < 5.4 nicht enthalten).

Als beiseite: bitte nicht das <font> Tag jemals wieder verwenden.

+0

Ich habe eine ältere Version, also die zweite hat super funktioniert. Ist es möglich, auch die Farbe der Zeile # auf rot zu ändern. Ich weiß nicht, wie man das fügt in Zeile # {$ line_num} Ich habe dieses Skript von woanders, also sollte ich Stylesheets verwenden, um die Schriftfarbe zu ändern. Oder meinst du etwas anderes? –

+0

@KGreen: Etwas so einfaches wie ' xx' wird es tun, aber werfen Sie einen Blick auf eine CSS-Referenz. – Jon

Verwandte Themen