Arrays zusammenfügen

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

  • Arrays zusammenfügen

    So also ich meld mich mal nochmal^^ hab mal wieder ein problem mit arrays
    nun ich hab ja das logfile das vllt welche von euch noch kennen
    für die anderen hier könnt hier es mal anschauen:
    http://www.n0n-clan.net/Statistics1.log

    Nun hab ich diesen code:

    PHP-Code:
    $datei fopen ("Statistics1.log""r");


    /*Absuche nach relevanten Daten*/

    while (!feof($datei))
    {   
       
    $zeile fgets($datei,1024);
       
    $regex "/^Levelname\s*: /iU";
       
    $regex1 "/^Gametype\s*: /iU";
       
    $regex3 "/^Playername\s*: /iU";
       
    $regex4 "/^Kills\s*: /iU";
       
    $regex5 "/^Deaths\s*: /iU";
       
       
      if (
    preg_match_all($regex,$zeile,$matches,PREG_SET_ORDER))
      {
        foreach(
    $matches as $match)
        {
        
    $server['levelname'][] = $zeile;
        }
      }
      
      if (
    preg_match_all($regex1,$zeile,$matches,PREG_SET_ORDER))
      {
        foreach(
    $matches as $match)
        {
         
    $server['gametype'][] = $zeile;
        }
      }
      
      if (
    preg_match_all($regex3,$zeile,$matches,PREG_SET_ORDER))
      {
        foreach(
    $matches as $match)
        {
        
    $input['playername'][] = $zeile;
        }
      }
      
      if (
    preg_match_all($regex4,$zeile,$matches,PREG_SET_ORDER))
      {
        foreach(
    $matches as $match)
        {
         
    $input['kills'][] = $zeile;
        }
      }
      
      if (
    preg_match_all($regex5,$zeile,$matches,PREG_SET_ORDER))
      {
        foreach(
    $matches as $match)
        {
        
    $input['deaths'][] = $zeile;
        }
      }
    }
    fclose($datei);

    /*Liest die Daten in ein array und macht sie in die eine gewisse form. Dabei werden unwichtige Datengelöscht*/

    $input=array_merge($input$server);


    $values = array();


    for (
    $i 0$i sizeof ($input['playername']); $i++)
    {
             
    $values[] = "('".$input['playername'][$i]."','".$input['kills'][$i]."','".$input['deaths'][$i]."',
             '"
    .$server['levelname'][$i]."','".$server['gametype'][$i]."')<br>";    
             
    $values preg_replace("#Playername|Kills|Deaths|Levelname|Gametype|:|\s#Um"""$values); 
             foreach (
    $values as $vali)
             {
             echo 
    $vali;
             }

    Wenn ich das nun mit dem logfile mache dann kommt das hier raus:

    http://www.n0n-clan.net/ausgabe.txt

    Was ich allerdings haben wollte ist das hier als Beispiel:

    ('playername','kills','deaths','levelname','gametype')

    und zwar ist es ja so in dem logfile, dass wenn bei dem server die map in diesem fall der levelname zu ende ist, da es nur ein bestimmte zeit läuft, das dann dieses hier wieder geschrieben wird bei dem anfang zur nächsten map:



    ================================================================================
    == Statistics ==
    ================================================================================
    Servername : $5|$9-n$50$9n-$5|$9--$5|$9-$5N$9ow $5o$9r $5N$9ever-$5| $0Public V1.4
    Levelname : mp_2v2_toon
    Gametype : ASSAULT
    ================================================================================
    Nun danach kommen die Spieler die auf dem server spielen. Und wenn die zeit zu ende ist geht das wieder von neuem los.
    Nun würde ich es gerne so haben, dass die Daten aus dem Zitat zu den Playernamen die unter dem Zitat und zwar nur bis zu dem punkt bis ein neuer levelname kommt die Daten aus dem Zitat bekommen.

    Und noch eine frage woran könnte es liegen, das bei der ausgabe immer alles obere wiederholt wird wenn eine neue zeile dazu kommt und wie könnte ich das beheben

  • #2
    Nun würde ich es gerne so haben, dass die Daten aus dem Zitat [...] die Daten aus dem Zitat bekommen.
    Fertig.



    Drück dich bitte noch mal korrekt aus!



    PS:
    PHP-Code:
    foreach ($values as $vali)
             {
             echo 
    $vali;
             } 
    das muss natürlich aus der schleife raus

    Kommentar


    • #3
      Nun ist ein bisschen scheiß es auszudrücken. Also was ich haben will ist, das die Daten aus dem Zitat ( levelname und gametype ) so lange zu dem Daten der folgenen Spieler geschrieben wird, bis die Map neu startet. Denn dabei ändert sich das Zitat zB von dem hier:

      ================================================================================
      == Statistics ==
      ================================================================================
      Servername : $5|$9-n$50$9n-$5|$9--$5|$9-$5N$9ow $5o$9r $5N$9ever-$5| $0Public V1.4
      Levelname : mp_2v2_toon
      Gametype : ASSAULT
      ================================================================================
      in das hier:

      ================================================================================
      == Statistics ==
      ================================================================================
      Servername : $5|$9-n$50$9n-$5|$9--$5|$9-$5N$9ow $5o$9r $5N$9ever-$5| $0Public V1.4
      Levelname : mp_2v2_avp
      Gametype : ASSAULT
      ================================================================================
      und nach dem 2. Zitat sollen die Spieler darunter diese Daten aus diesem 2. Zitat bekommen bis dann das 3. Zitat ( ich nenn es einfach mal so ) kommt.

      Und dies eben immer so weiter

      PS: hab den fehler beseitigt mit den zuvielen ausgaben thx jetzt sieht die ausgabe so aus:

      ('$5|$9-n$50$9n-$5|$9--$5|$9-$5C$9apone-$5|','0','0','mp_2v2_toon','ASSAULT')
      ('$4Klappspaten','0','0','mp_2v2_avp','ASSAULT')
      ('$4Klappspaten','8','18','mp_2v2_battlefield','ASSAULT')
      ('$4w$1T$4c$0/$4/$6/$4Hun$1t$4er','19','12','mp_2v2_buddha','ASSAULT')
      ('$2DESPERADO','9','22','mp_2v2_cliffside','ASSAULT')
      ('$1w$5C$1Ad$5!$1bomba','20','8','','')
      ('$9M$83$9D$9O','21','8','','')
      ('true-DigitalError','6','15','','')
      ('$2sta$1lfiX$0*$4*$6*','4','7','','')
      ('$5|$9-n$50$9n-$5|$9--$5|$9-$5C$9apone-$5|','2','0','','')
      ('$4Klappspaten','29','28','','')
      ('$4w$1T$4c$0/$4/$6/$4Hun$1t$4er','29','33','','')
      ('$2DESPERADO','12','26','','')
      ('$1Paja$8Patak','46','25','','')
      ('$9M$83$9D$9O','29','21','','')
      ('true-DigitalError','16','35','','')
      ('$2sta$1lfiX$0*$4*$6*','7','28','','')
      ('$0..$8P$0.$1!$9$0.$8M$0.$1P$0..','18','11','','')
      ('$0bodom','5','3','','')
      ('$0-$3]$9C$3y$9rus$3[$0-','34','23','','')
      ('$5|$9-n$50$9n-$5|$9--$5|$9-$5C$9apone-$5|','1','0','','')
      ('$4Klappspaten','21','42','','')
      ('$5|$9-n$50$9n-$5|$9--$5|$9-$5C$9apone-$5|','39','23','','')
      ('$2DESPERADO','20','35','','')
      ('$1Paja$8Patak','44','29','','')
      ('$9M$83$9D$9O','47','28','','')
      ('true-DigitalError','15','40','','')
      ('$2sta$1lfiX$0*$4*$6*','4','18','','')
      ('nervös','10','6','','')
      ('$6|$0Fr$4!$0endZ$6|$0S$6taso$0n','9','13','','')
      ('$0bodom','39','39','','')

      Kommentar


      • #4
        Ich weiss zwar nicht genau was du möchtest, aber Arrays kannst du mit folgender Funktion zusammenfügen: array_merge()

        Kommentar


        • #5
          jo toll dann schau mal oben ...

          $input=array_merge($input, $server);
          soweit war ich auch schon^^

          Kommentar


          • #6
            ich vermute auch jmc war einfach nicht in der lage zu verstehen, was du willst.

            zeig mal soll- und ist-zustand. den ist-zustand bitte mit einem code-auszug (aber wirklich nur die entsprechende stelle und keine zeile mehr)

            Kommentar


            • #7
              Nun also ich erkläre es noch mal

              Das logfile ist so aufgebaut:

              Allgemeine serverinfo
              1. player
              2. player
              ...
              Allgemeine serverinfo
              1. player

              so nun die Allgemeine server info ist dies hier:

              ================================================================================
              Servername : $5|$9-n$50$9n-$5|$9--$5|$9-$5N$9ow $5o$9r $5N$9ever-$5| $0Public V1.4
              Levelname : mp_2v2_toon
              Gametype : ASSAULT
              ================================================================================
              Nun will ich das die daten (levelname und gametyp) den playern von der Allgemeinen serverinfo bis zu nächsten serverinfo bekommen. Die Allgemeine serverinfo kommt allerdings immer erst nach X player wobei X eben von dem Spielern auf dem server abhengt.
              nun will ich eben ein script das wie oben schon gesagt

              Die Allgemeine Serverinfo an die player die unter dieser stehen und bis zur nächsten Allgemeinenserverinfo reichen bekommen.

              Und dann eben die nächsten player unter der zu endenen Allgemeinen serverinfo wieder die daten von dieser allgemeinen serverinfo bekommen, die allerdings wieder nur bis zur nächsten Allgemeinen server in fo sind

              Ich denke der wichtige abschnitt ist dieser hier:

              PHP-Code:
              $input=array_merge($input$server);


              $values = array();


              for (
              $i 0$i sizeof ($input['playername']); $i++)
              {
                       
              $values[] = "('".$input['playername'][$i]."','".$input['kills'][$i]."','".$input['deaths'][$i]."',
                       '"
              .$server['levelname'][$i]."','".$server['gametype'][$i]."')<br>";    
                       
              $values preg_replace("#Playername|Kills|Deaths|Levelname|Gametype|:|s#Um"""$values); 

              }         
              foreach (
              $values as $vali)
                       {
                       echo 
              $vali;
                       } 
              Ich habe auch schon $input und $server ausgegebn lassen.

              Das sieht so aus:

              Array
              (
              [playername] => Array
              (
              [0] => Playername : $5|$9-n$50$9n-$5|$9--$5|$9-$5C$9apone-$5|

              [1] => Playername : $4 Klappspaten

              [2] => Playername : $4 Klappspaten

              [3] => Playername : $4w$1T$4c $0/$4/$6/ $4Hun$1t$4er

              ...

              )

              [kills] => Array
              (
              [0] => Kills : 0

              [1] => Kills : 0

              [2] => Kills : 8

              [3] => Kills : 19

              ...
              )

              [deaths] => Array
              (
              [0] => Deaths : 0

              [1] => Deaths : 0

              [2] => Deaths : 18

              [3] => Deaths : 12

              ...
              )

              )



              Array
              (
              [levelname] => Array
              (
              [0] => Levelname : mp_2v2_toon

              [1] => Levelname : mp_2v2_avp

              [2] => Levelname : mp_2v2_battlefield

              [3] => Levelname : mp_2v2_buddha

              [4] => Levelname : mp_2v2_cliffside

              )

              [gametype] => Array
              (
              [0] => Gametype : ASSAULT

              [1] => Gametype : ASSAULT

              [2] => Gametype : ASSAULT

              [3] => Gametype : ASSAULT

              [4] => Gametype : ASSAULT

              )

              )
              ich habe einfach mal [playername] [kills] [deaths] auf 3 gekürzt sind allerdings 30^^

              Dies ist auch nur ein beispiel also die serverlogfiles können auch einmal mehr player haben oder auch weniger

              Kommentar

              Lädt...
              X