in_array(); ??

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

  • in_array(); ??

    *grmpf* Browser abgestürzt, Beitrag wech... Naja ich schreibs noch mal.....

    Also ich hab ein Problem mit arrays..
    Ich lese mit file(); eine Datei in ein array welches Wörter untereinander zu stehen hat. So nun bekomme ich ein Wort über ein Formular. Jetzt will ich mit in_array(); überprüfen ob mein Wort in dem array steckt.
    Klapt auch, aber nur solange das Wort als "letztes" Element im array steckt. zb.

    Hm anders....
    Ich bekomme das Wort Klaus über das Formular. Meine Datei habe ich mit file(); in $lines1 eingelesen. Jetzt überprüfe ich:
    PHP-Code:
    if(in_array($wort$lines1)){
    echo 
    "Wort enthalten";
    }else{
    echo 
    "Wort nicht enthalten";

    steht jetzt Klaus jetzt an erster stelle im array $lines1 wird "Wort nicht enthalten ausgegeben...

    *Uff* blöd zu erklären, aber kann mir einer erklären warum des so ist ? oder hat jemad vieleicht eine bessere Idea ?
    Also wichtig ist das ich des array $lines1 weiterhin im restlichen Script brauche...

    Danke gruß Frosty
    My New Projekt: P²Board
    Designer im Team gesucht !

  • #2
    Probier' mal vorher das Array zurückzusetzen:
    reset($array);
    "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

    Kommentar


    • #3
      Hi Nezzar,

      Leider hilft mir reset(); nicht weiter. Nach wie vor wird nur dem letzten Element des array´s beachtung geschenkt. Hm irgendwas stimmt hier nicht...
      My New Projekt: P²Board
      Designer im Team gesucht !

      Kommentar


      • #4
        Vielleicht hilft es uns weiter, wenn wir die Fehlerquellen eingrenzen.

        Printe mal alle Elemente und das Wort mit folgender Anweisung aus und vergleiche die Ergebnisse:
        echo implode("<br>",$lines1);
        echo "<br>\"$wort\"<br>";

        EDIT: Möglicherweise hilft es auch, wenn du trim() auf die Elemente deines Arrays anwendest.
        Zuletzt geändert von Troublegum; 30.03.2002, 18:06.
        [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
        [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
        [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

        © Harald Schmidt

        Kommentar


        • #5
          Hi,

          Also mein array hab ich ja schon kontrolliert mit
          PHP-Code:
          echo "<b> \$lines1".":</b><br>";
          foreach(
          $lines1 as $wert)
          {
              echo 
          $wert."<br>";

          Das array ist soweit in Ordnung. Erstaunlich ist das bei deiner Anweisung das letzte Element nur ein " " ist. Hm ich wage nun ma zu vermuten weil ich das ganze ja in einer while schleife zu laufen hab, das es daran liegt. Ich poste mal meinen Code:
          PHP-Code:
          <?
          // Gesperrte Ordner und Dateien einlesen
          $fp = fopen ($search_pfad."/baddatei.txt", "r");
          flock($fp,1);
          $lines1 = file($search_pfad."/baddatei.txt");
          flock($fp,3);
          fclose($fp);

          $dh = opendir($home_pfad);
          while($datei = readdir($dh))

              if($datei !== "" && $datei !== "." && $datei !== ".."){

                  if(is_dir($home_pfad."/".$datei)){

                      if(!in_array($datei, $lines1)){
                          array_push($array1, $datei);
                      }
                 }

                  if(is_file($home_pfad."/".$datei)){

                      if(!in_array($datei, $lines1)){
                          array_push($array2, $datei);
                      }
                  }
              }
          }
          ?>
          Ich versuche hier ein Verzeichnis auszulesen und es in Ordner und Dateien zu unterteilen. Also alle Ordner in $array1 und alle Dateien in $array2. So nun hab ich noch eine .txt Datei in dem Ordner oder Dateien stehen den dann keine Beachtung geschenkt werden darf.. Aber offensichtlich kommt in_array ned mit der While schleife klar...
          My New Projekt: P²Board
          Designer im Team gesucht !

          Kommentar


          • #6
            hm. möglicherweise einfach mal initialisieren:
            $array1=array();
            $array2=array();

            Du willst offensichtlich keine doppellten Einträge haben.
            Ein anderer Weg wäre, dass du einfach alles in den Array hinzufügst und danach mit array_unique() alle doppelten Einträge löschst.

            Die gültigen Wörter könntest du dann mit array_diff(); ermitteln.

            Aber ich weiß auch net, worans liegt.
            Zuletzt geändert von Troublegum; 30.03.2002, 18:16.
            [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
            [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
            [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

            © Harald Schmidt

            Kommentar


            • #7
              Hi,

              Ne hatt meine array´s schon vorher alle initialisiert. array_unique() bringt mir nichts. Ich will ja keine doppelten vermeiden sondern Dateien bzw Order sperren. Also wenn ich den Ordner cgi-bin ned in meine array aufbehmen will, dann schreib ich Ihn in meine .txt Datei rein und der wird dann nacher per in_array überprüft und dann gleich aussortiert. Naja so hatte ich mir das mal vorgestellt. Ha vieleicht einer andere Vorschläge wie man das lösen könnte ?

              Danke nochmals

              Gruß Frosty
              My New Projekt: P²Board
              Designer im Team gesucht !

              Kommentar


              • #8
                Ha vieleicht einer andere Vorschläge wie man das lösen könnte ?
                Ja, hab ich doch schon geschrieben

                Ein anderer Weg wäre, dass du einfach alles in den Array hinzufügst und danach mit array_unique() alle doppelten Einträge löschst.

                Die gültigen Wörter könntest du dann mit array_diff(); ermitteln.
                [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                © Harald Schmidt

                Kommentar


                • #9
                  Hoppla array_diff(); hab ich wohl überlesen ebend. sorry.
                  Ja danke damit werd ich es mal probieren

                  Gruß Frosty
                  My New Projekt: P²Board
                  Designer im Team gesucht !

                  Kommentar


                  • #10
                    verfixte array´s... mit array_diff funktionokelt des auch ned. Wird auch nur das letzte Element beachtet...
                    My New Projekt: P²Board
                    Designer im Team gesucht !

                    Kommentar


                    • #11
                      hm... muß ich anders machen. Kann mir einer sagen wir ich die Zeilennummer eines Elements im array herrausbekomme ? Also ich will dann die einzelnen Elemente mit array_splice nachträglich entfernen. Aber dazu braucht man die genaue Position im array.

                      Gruß Frosty
                      My New Projekt: P²Board
                      Designer im Team gesucht !

                      Kommentar

                      Lädt...
                      X