Ankündigung

Einklappen
Keine Ankündigung bisher.

csv einlesen, erste, zweite und letzte Zeile ausgeben

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

  • csv einlesen, erste, zweite und letzte Zeile ausgeben

    Abend

    test.csv

    Zeile1;test1;sgdsadgdsga
    Zeile2;test2;aghtrhhdfh
    Zeile3;test3;sadhshhh
    Zeile4;test4;sahdghsh
    Zeile5;test5;adddgsdsd
    Zeile6;test6;sdadfdga dgdgg

    PHP-Code:
    $handle fopen('test.csv''r');
    $i 0;

    while ((
    $data fgetcsv($handle30000';')) && $i 2){
    echo 
    "$data[0]$data[1]<br />\n";
    $i ++;
    }
    fclose($handle); 
    ich möchte aus dieser csv die ersten, zwei und die letzte Zeile ausgeben. Hier habe ich die ersten beiden. Wie komme ich nun zur letzten Zeile.

    Oder, das ist ein anderer Gedanke, ich könnte ja die Ganze csv in einen array einlesen, nur begreife ich einfach nicht wie ich dann beliebige Zeilen ausgeben kann, also nicht alle, sondern nur bestimmte Zeilen.


  • #2
    Letzte Zeile ausgeben:
    PHP-Code:
    <?php
    $csv 
    array_map('str_getcsv'file('test.csv'));
    echo 
    implode(','array_pop($csv));
    Einzelne Zeilen ausgeben:

    PHP-Code:
    echo implode(','$csv[0]); 

    Kommentar


    • #3
      Zitat von schreckag Beitrag anzeigen
      Wie komme ich nun zur letzten Zeile.
      Alle Zelen mit file einlesen dann mit end().

      Kommentar


      • #4
        danke das ging schnell. wenn ich jetzt aber nur einen Teil dieser Zeile benötige, bspw nur die zweite "Spalte" in eine Variable speichern möchte...?

        Kommentar


        • #5
          Edit: vorher nochmal die einzelnen Werte exploden:

          PHP-Code:
          $csv array_map('str_getcsv'file('test.csv'));

          $row explode(';'end($csv)[0]);
          //echo sprintf('%s,%s', $row[0], $row[1]); 

          Kommentar


          • #6
            Ja funktioniert. Was genau genau passiert hier, warum bekomme ich nur die ersten beiden Spalten ausgegeben

            PHP-Code:
            echo sprintf('%s,%s'$row[0], $row[1]); 

            Kommentar


            • #7
              Wenn man natürlich nicht alle Daten benötigt, ist es wenig sinnvoll die Daten in den Speicher zu laden. Zumal so eine Datei auch mal irgendwann den Speicher überfordert. Daher solle man eine Lösung bemühen, die solange durch die Zeilen geht, bis das Ende erreicht ist und nur den Teil lädt der gebraucht wird.
              bitcoin.de <- Meine Freelancerwährung

              Kommentar


              • #8
                habe mich bestimmt wieder unklar ausgedrückt ...
                ich möchte gerne aus der letzten Zeile, den zweiten Teil (würde es Spalte nennen) in eine Variable speichern

                Kommentar


                • #9
                  Möchtest du deine konkreten Anforderungen mal zusammenhängend aufschreiben, damit die Leute hier direkt die richtigen Hinweise zu einer passenden Lösung liefern können?
                  Diese Salami-Taktik ist doch völlig unnötig.
                  Relax, you're doing fine.
                  RTFM | php.de Wissenssammlung | Datenbankindizes | Stay fit

                  Kommentar


                  • #10
                    Huch, wo kommt denn jetzt die "Freundlichkeit" her, habe mir erlaubt in Post 4

                    wenn ich jetzt aber nur einen Teil dieser Zeile benötige, bspw nur die zweite "Spalte" in eine Variable speichern möchte...?

                    post 6 nachzufragen

                    warum bekomme ich nur die ersten beiden Spalten ausgegeben

                    Wo wäre jetzt die angeprangerte Salamitaktik? Soll ich für eine Nachfrage einen neuen Fred aufmachen, oder wie soll ich das verstehen?

                    Kommentar


                    • #11
                      Alpha
                      Oder man liest gleich von hinten nach vorne mit fseek bis das Zeilenvorschubzeichen erreicht ist.

                      PHP-Code:
                      $fp fopen($file"r");
                      $pos = -2;  // Startposition vom Ende ab
                      while (fgetc($fp) != "\n") {
                          
                      fseek($fp$posSEEK_END);
                          
                      $pos $pos 1;
                      }
                      $lastline fgets($fp); 
                      Die Zeile dann mit explode() am Komma trennen und auf das Array mit $palte[1] auf die 2. Spalte zugreifen.
                      Da in dem gezeigten Beispiel keine Sonderzeichen verwendet werden für den Text ist wohl explode besser als getcsv

                      http://php.net/manual/en/ref.filesystem.php

                      Kommentar


                      • #12
                        Zitat von schreckag Beitrag anzeigen
                        Ja funktioniert. Was genau genau passiert hier, warum bekomme ich nur die ersten beiden Spalten ausgegeben

                        PHP-Code:
                        echo sprintf('%s,%s'$row[0], $row[1]); 
                        Die erste Spalte steht in $row[0] die 2. in $row[1] die 3. in $row[2] usw.

                        Kommentar


                        • #13
                          PHP-Code:
                          $csv array_map('str_getcsv'file('test.csv'));
                          $row1 implode(','$csv[0]) ;     //erste Zeile
                          $row2 implode(','$csv[1]) ;     //zweite Zeile
                          $rowe implode(','array_pop($csv)); //letzte Zeile 
                          hat sich als das für mich Richtige herausgestellt.

                          vielen Dank!

                          Kommentar

                          Lädt...
                          X