Ankündigung

Einklappen
Keine Ankündigung bisher.

Text-/CSV-Datei mit ein-Wort-Zeilen in Array schreiben, zählen und sortiert ausgeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Text-/CSV-Datei mit ein-Wort-Zeilen in Array schreiben, zählen und sortiert ausgeben

    Hi,

    angenommen, eine Text-/CSV-Datei hätte folgenden Inhalt:

    peter
    roland
    ralph
    birgit
    rosalinde
    peter
    peter
    oskar
    ...

    Diese Datei möchte ich per php lesen, dabei alle doppelten Namen ignorieren und die verbleibenden alphabetisch sortiert und mit 1 beginnend untereinander ausgeben:

    1 birgit
    2 oskar
    3 peter
    4 ralph
    5 roland
    6 rosalinde
    ...

    Aus Schnipseln habe ich folgendes gebastelt - ohne sinnvolles Ergebnis:
    PHP-Code:
     <?php
    $datei 
    fopen("namen_aus_statistiken_filtern.csv""r");
    $daten fgetcsv($datei1000);
    while (
    $daten)
    {
    $daten fgetcsv($datei1000);
    }
    fclose($datei);

    $array explode ' '$daten );
    $names array_unique $array );
    natsort($names);
    foreach (
    $names as $key => $value)
    {
    echo 
    $key ": " $value "<br />";
    }
    ?>


    Auch der Austausch des ersten Teil-Codes brachte nicht den gewünschten Erfolg:
    ...
    PHP-Code:
    $file_handle fopen('namen_aus_statistiken_filtern.csv''r');
    while (!
    feof($file_handle))
    {
    $gesamt fgets($file_handle);
    }
    fclose($file_handle); 




    Kann jemand weiterhelfen?

    Gruß

    Frank

  • #2
    Bitte nutze zukünftig die Code Tags hier im Forum wenn du Code zu deinem Beitrag hinzufügst. Du findest auch die Schalter dazu im erweiterten Editor.

    Das was du zeigst ist aber keine CSV Datei, diese kannst du mit file einlesen und hast dann gleich ein Array zur Verfügung.

    PHP-Code:
    $array file("namen.txt");

    $names array_unique $array );
    sort($namesSORT_NATURAL);

    $cnt=1;
    foreach (
    $names as  $value)
    {
        echo 
    $cnt++ . ": " $value "<br>\n";

    Arrays beginnen immer bei 0 normalerweise und daher hier der Umweg mit dem counter, je nach dem wie man es braucht kann man das auch anders lösen.

    Kommentar


    • #3
      Zitat von protestix Beitrag anzeigen
      sort($names, SORT_NATURAL);
      Vielen Dank für den kurzen Code. Ich habe die obige Zeile noch in
      PHP-Code:
      natsort($names); 
      geändert. Jetzt funktioniert es wie gewünscht.

      Zitat von protestix Beitrag anzeigen
      Bitte nutze zukünftig die Code Tags hier im Forum wenn du Code zu deinem Beitrag hinzufügst. Du findest auch die Schalter dazu im erweiterten Editor.
      Das werde ich.

      Gruß

      Frank

      Kommentar


      • #4
        Zitat von fratso Beitrag anzeigen
        Ich habe die obige Zeile noch in
        PHP-Code:
        natsort($names); 
        geändert. Jetzt funktioniert es wie gewünscht.
        Ich sehe keinen Grund, die Zeile
        PHP-Code:
        sort($namesSORT_NATURAL); 
        zu ändern. Wenn die Anweisung bei dir einen Fehler bringt, liegt das vermutlich an einer total veralteten PHP-Version, die das Flag SORT_NATURAL nicht unterstüzt.


        Kommentar


        • #5
          Ich käme nicht auf die Idee so etwas mit PHP zu lösen. Die Kommandozeile bietet doch ausreichend Befehle für solche Geschichten.

          Kommentar

          Lädt...
          X