txt Datei mit php sortieren?

1 Antwort

aber irgendwie funktioniert nichts, ist das überhaupt möglich?

Sofern man etwas falsch macht, ja.

(...) ich habe eine Liste mit Namen und Altern und würde diese gerne mit php sortieren lassen

Zuerst einmal müsste analysiert werden, in welchem Format die Daten vorliegen. Die Daten für jeden Eintrag müssen nach einer Regel zuordbar und von anderen Einträgen trennbar sein. Anhand des Formats lässt sich schlussendlich bestimmen, wie man die Datei am besten auslesen kann.

Wenn beispielsweise jeder Eintrag via Komma von anderen getrennt ist, könnte man den Dateiinhalt lesen (file_get_contents) und anschließend anhand des Kommas aufteilen (str_split). Bei zeilenweisen Einträgen könnte man die Datei stattdessen zeilenweise auslesen oder bei einem bekannten Format (wie XML, JSON, etc.) einen Parser verwenden. Schau in das PHP Manual für passende Funktionen.

Um einen Eintrag abzubilden, würde ich wohl eine Klasse definieren:

class Person {
  var $name, $age;

  public function __construct($name, $age) {
    $this->name = $name;
    $this->age = $age;
  }

  public function getName() {
    return $this->name;
  }

  public function getAge() {
    return $this->age;
  }
}

Um alle Einträge zu speichern, eignet sich daher ein Array aus Person-Objekten.

Die Sortierung kann man anschließend mittels usort vornehmen.

Beispiel:

function comparePersons($person1, $person2) {
  return strcmp($person1->getName(), $person2->getName());
}

$persons = // read entries from file ...
usort($persons, "comparePersons");

Die Funktion comparePersons definiert hierbei, wie zwei Personen im Vergleich miteinander gewichtet werden sollen (lies dazu in der oben verlinkten Dokumentation).