Log auswerten mit hilfe von Multidimensionalen Arrays ?

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

  • Log auswerten mit hilfe von Multidimensionalen Arrays ?

    ich versuche ein log auswertung zu filtern, der log sieht in etwa so aus:

    Tommi kauft 2kg Käse - hab nen guten shop gefunden
    Max verkauft 5kg Käse - da war einer hungrig
    Anna kauft 0,5L Saft - hatte durst
    Tommi kauft 3kg Käse - gleich nochmal gekauft
    Max kauft 1kg Käse - jetzt kauf ich halt mal
    Anna verkauft 0,3L Saft - hatte durst
    mein ziel ist es jetzt die einzelnen einträge des logs zusammen zufassen das alle User (Tommi, Max, Anna) in einzelnen blöcken aufgelistet werden ausserdem sortiert nach kauf oder verkauf also bsp:

    Anna kauft 0,5L Saft - hatte durst
    Anna verkauft 0,3L Saft - hatte zuviel davon

    Max kauft 1kg Käse - da war einer hungrig
    Max verkauft 5kg Käse - jetzt kauf ich halt mal

    Tommi kauft 2kg Käse - hab nen guten shop gefunden
    Tommi kauft 3kg Käse - gleich nochmal gekauft


    da ich mich nicht so gut auskenne dachte ich das ich dazu den kompletten log in eine Variable lege diese dann mit hilfe von "explode" in ein array getrennt nach Zeilenumbrüchen so das ich jede zeile in einem eintrag des array´s hab, soweit auch noch kein problem, allerdings weis ich nicht wie ich weiter vorgehen könnte um die einträge nach den elementen [0] und [1] sortieren zu lassen.

    kennt da einer ein paar tips ? Ihr braucht mir auch nciht tiefer darauf eingehen, einafch ein paar stichworte nach dennen ich suchen kann die mir helfen könnten weil ich grad total im wald steh

  • #2
    Wenn der name immer als erstes steht und vom Rest mit einem leerzeichen getrennt ist, dann is es doch einfach:
    mit file() die datei einlesen
    dann durch das array gehen und mit explode zerlegen und in ein assoziatives array mit dem index name ablegen...
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      habs jetzt nocheinfacher gelöst:

      PHP-Code:
      <?php

      // einlesen aus einem eingabefeld
      $in $_POST['in'];
      $zeilen explode("\n"$in);

      // Array einträge alphabetisch ordnen
      asort($zeilen);

      // Zeilenweises ausgeben der einträge
      foreach ($zeilen as $wert)
              echo 
      $wert."<br>";

      ?>
      allerdings hab ich jetzt noch ein problem der unterteilung, wie kann ich zwischen den einzelnen User zeilen umbrüche machen ?
      ist das auf die art überhaupt möglich oder muß ich da tatächlich jedem eintrag eine id geben ?

      Kommentar


      • #4
        Schneide dir in der froeach Schleife die Namen der User aus und speichere ihn in einem Array ab z.b.: $old_user[].
        Du braust einen Zähler.
        Außerhalb der foreach-schleife: $x =0;
        In der foreach-schleife: $x++;
        Dann checkst du noch in einer IF Abfrge ob $old_user[($x-1)] !== user des aktuellen Datensatzes ist. Ist dies der Fall, so fügst du eine Leerzeile ein.
        Ich hoffe ich habe mich verständlich genug ausgedrückt.

        Kommentar


        • #5
          würde auf die schnelle sagen so, ohne es getestet zu haben.

          PHP-Code:
          <?
              $out = array();
              $name = "";
              $datei = file("pfad");
              
              foreach ($datei as $line) {
                  $name = substr($line,0,strpos($line," "));
                  $out[$name][] = substr($line,strpos($line," "),strlen($line));
              }
              
              print_r($out);
          ?>
          *edit* hab das mit der Sortierung übersehen, das müsste man dann noch einbauen
          Zuletzt geändert von kaguya; 03.02.2007, 11:06.

          Kommentar


          • #6
            Re: Log auswerten mit hilfe von Multidimensionalen Arrays ?

            Ein Logfile per Post lesen?

            Kommentar

            Lädt...
            X