2016-04-24 2 views
2

Hey Jungs sortieren zur Zeit ich eine Textdatei, dieWie eine Textdatei durch den zweiten Index in jeder Zeile mit PHP

Los Angeles, Kalifornien
Seattle, Washington
Detroit, Michigan

sieht wie dieses

Die Stadt und der Staat sind durch ein Komma getrennt. Ich weiß, wie man die Textdatei nach der Stadt sortiert, aber ich weiß nicht, wie man die Textdatei durch den Staat sortiert.

Irgendwelche Vorschläge?

Ich habe versucht, diese

<?php 
    $file = file("states.txt"); 
    sort($file); 
    for($i=0; $i<count($file); $i++) { 
     $states = explode(",", $file[$i]); 
     echo $states[0], $states[1],"<br />"; 
    } 
?> 
+4

uns Zeigen Sie, was Sie versucht haben, andernfalls sieht aus wie ein ___do es für mich___ Anfrage – RiggsFolly

+0

Ich habe so etwas gemacht. "; } ?> –

+0

Sie können Ihre Frage jederzeit bearbeiten, um Informationen hinzuzufügen. Es ist besser als zu versuchen, Code in einem Kommentar zu lesen – RiggsFolly

Antwort

1

Lassen Sie uns sagen, dass Ihre Textdatei cities.txt genannt wird.
Hier einfache Lösung ist mit file, usort, strpos und strcmp Funktionen:

$cities = file("cities.txt"); // reading file contents as array of strings(lines) 

usort($cities, function($a, $b){ // sorting by the first character of the state name 
    return strcmp($a[(strpos($a, ",") + 2)], $b[(strpos($b, ",") + 2)]); 
}); 

//file_put_contents("cities.txt", implode("", $cities)); // for saving sorted file contents 

print_r($cities); 

Der Ausgang (als Array):

Array 
(
    [0] => Los Angeles, California 

    [1] => Detroit, Michigan 

    [2] => Seattle, Washington 

) 
+0

Vielen Dank. Genau das habe ich gesucht. –

+0

@NFSNFS, du bist willkommen – RomanPerekhrest

+0

Übrigens gibt es eine andere Möglichkeit, ich kann diese gleiche Aufgabe tun. Etwas mehr in der line like Funktion ($ file, $ index). Die Dateivariable wäre etwas wie $ file = file ("text.txt") und $ index wäre wie die Datenspalte, nach der wir die Datei sortieren wollen? –

Verwandte Themen