Problem mit verschachtelten Schleifen

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

  • Problem mit verschachtelten Schleifen

    Kurze Situationsbeschreibung:
    Ich habe eine .txt Datei die ich mit curl einlese und per explode zeilenweise in ein array schreib.
    Nun durchlaufe ich das array um jede Zeile nach bestimmten Kriterien zu durchsuchen und in Kategorien einzuordnen.
    Hier ein Auszug des relevanten Codes:
    PHP-Code:
     foreach($line_arr as $line)
            {
                
    $class "sonstiges";
                if((
    substr_count($line":"10) >= 1
                   && (
    strpos($line"plugin not found!") == 0
                   && (
    strpos($line"Loading ") == 0
                   && (
    strpos($line" not loaded:") == 0
                   && (
    strpos($line"Death Handler") == 0))
                { 
    $class "chat"; }
    ...
    ...
    ...           
                echo 
    "<span class='".$class."'>".$line."<br></span>";
            } 
    Dieser Code funktioniert so weit auch einwandfrei.

    Nun werden die Kriterien für diese Kategorie allerdings immer mehr und um eine rießige if Abfrage zu vermeiden wollte ich das ganze in eine weitere Schleife packen das ein array mit den Kriterien durchläuft:
    PHP-Code:
    $searchstring = array("plugin not found""Loading "" not loaded:""Death Handler");
            foreach(
    $line_arr as $line)
            {
                
    $class "sonstiges";
                foreach(
    $searchstring as $searchitem)
                {
                    if((
    substr_count($line":"10) >= 1) && (strpos($line$searchitem) == 0)) 
                    { 
                        
    $class "chat"
                    }
                }
                echo 
    "<span class='".$class."'>".$line."<br></span>";
            } 
    Das hat so nicht funktioniert. Nachdem ich in der Manual für foreach gelesen habe, dass es bei verschachtelten foreach Schleifen zu Problemen mit dem Pointer kommen kann hab ich das ganze in eine For Schleife gepackt:
    PHP-Code:
    $searchstring = array("plugin not found""Loading "" not loaded:""Death Handler");
            foreach(
    $line_arr as $line)
            {
                
    $class "sonstiges";
                for(
    $i 0$i !== count($searchstring); $i++)
                {
                    if((
    substr_count($line":"10) >= 1) && (strpos($line$searchstring[$i]) == 0)) 
                    { 
                        
    $class "chat"
                    }
                }
                echo 
    "<span class='".$class."'>".$line."<br></span>";
            } 
    Leider funktioniert auch das nicht. Die zweite Schleife durchläuft einfach nicht das komplette array sondern nimmt immer nur das erste Element aus $searchstring
    Auch wenn ich aus beiden Schleifen eine For Schleife mache besteht das gleiche Problem.

    Da muss irgendwo ein dummer Denkfehler sein auf den ich einfach nicht komme.
    Vielleicht findet ja hier jemand den Fehler.
    Danke schonmal für hoffentlich kommende Tips.

  • #2
    Problem gelöst

    Ok ich hab mal ein paar Minuten pause gemacht und noch mal alles durch gedacht und bin schlussendlich selbst auf den Fehler gekommen.

    Ganz dummer Denkfehler.
    Das Problem lag nicht an den Schleifen sondern an den Bedingungen.

    Die Lösung ist so einfach, dass es schon fast peinlich ist:
    PHP-Code:
            $searchstring = array("plugin not found!""Loading "" not loaded:""Death Handler");
            foreach(
    $line_arr as $line)
            {
                
    $class "sonstiges";
                
    $ischat true;
                foreach(
    $searchstring as $searchitem)
                {
                    if(
    strpos($line$searchitem) > 0)
                    { 
                        
    $ischat false
                    }
                }
                if((
    substr_count($line":"10) >= 1) && ($ischat == true)) { $class "chat"; }
                echo 
    "<span class='".$class."'>".$line."<br></span>";
            } 
    Thread kann dann geschlossen werden, sorry.

    Kommentar

    Lädt...
    X