Ankündigung

Einklappen
Keine Ankündigung bisher.

Array durchsuchen nach Wort nicht nach ganzem Feld.

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

  • Array durchsuchen nach Wort nicht nach ganzem Feld.

    Hallo,
    ich würde gerne einen Such Mechanismus schreiben um einen Array zu durchsuchen. Jedoch kann ich mit folgendem Quellcode nur nach ganzen Feldern im Array suchen und nicht nach nur einem Wort wie in meinem Beispiel der Marke Giant. Jemand eine Idee wie ich nach nur einem Wort suchen kann und wo mir dann das gesamte Feld ausgespuckt wird?

    PHP-Code:

    <?php

    $fahrraeder 
    = array("Serious Valparola Black""Orbea Avant H50 Green""Votec VRX Black-Blue""Giant Contend Red""Ghost Lanao 2 Black""Cube AimRace White-Red""Cube Stereo 120 Blue-Green""Haibike Green");


    $Suche $_POST["fahrrad"];



    if(
    in_array("Giant Contend Red",$fahrraeder) and ($Suche == "Giant"))
    {

    $key array_search("Giant Contend Red",$fahrraeder);

     echo (
    $fahrraeder[$key]);  
     }

    else

        {
        echo
    "Fehler!";
         }

       
    ?>


  • #2
    Die Funktion strpos hilft dir weiter. Du iterierst durch den Array und prüfst mit strpos ob dein Teilstring drin vorkommt. Wenn strpos nicht FALSE ist kommt der String drin vor. Eleganter wäre es mit array_filter.

    http://php.net/manual/de/function.strpos.php

    http://php.net/manual/de/function.array-filter.php

    Kommentar


    • #3
      Danke für die Antwort. Ich versuche das gerade umzusetzen jedoch kriege ich die Verbindung von array und txt Datei nicht optimal hin.
      Kannst du mir weiterhelfen?

      Fehlermeldung: Warning: strpos() expects parameter 1 to be string, array given in /opt/lampp/htdocs/suchen.php on line 35

      PHP-Code:

      <?php

      $test2 
      file('hinzufuegen2.txt');

      $Suche $_POST["fahrrad"];


      for(
      $i=0;$i count($test2); $i++){

          
      $pos strpos($test2$Suche);

      }

      if(
      $pos === false) {

          echo(
      "Nicht vorhanden!");

          }
               else
               {
                   
      $key array_search($Suche,$test2);

                   echo(
      $test2[$key]);

                   }

      ?>

      Kommentar


      • #4
        Beispiel
        PHP-Code:
        $bikes = array("Serious Valparola Black""Orbea Avant H50 Green""Votec VRX Black-Blue""Giant Contend Red""Ghost Lanao 2 Black""Cube AimRace White-Red""Cube Stereo 120 Blue-Green""Haibike Green");

        $needle 'Orbea';

        $result 'nicht vorhanden';

        foreach (
        $bikes as $bike){
            if ( 
        stripos($bike$needle) !== false ){
                
        $result $bike;
                break;                          
            }
        }

        var_dump($result); 

        Kommentar


        • #5
          Vielen Dank, das klappt jetzt schonmal gut. Allerdings kann ich mit der Methode, beispielsweise nicht alle Fahrräder der Marke Bergamont ausgeben, sondern nur das welches im Array als erstes kommt. Jemand ne Idee wie man das beheben kann? vielleicht mit ner while oder for schleife? wenn ja wie?

          PHP-Code:
          <?php

          $test2 
          file('hinzufuegen2.txt');



          $Suche $_POST["fahrrad"];


          $needle $Suche;



          foreach (
          $test2 as $bike){
              if ( 
          stripos($bike$needle) !== false ){

                 echo 
          $bike;

                  break;                          
              }
          }



          ?>

          Kommentar


          • #6
            Dann überführe das in ein Array und nimm das break raus.

            Kommentar


            • #7
              Sorry, jetzt muss ich ganz blöd fragen: Was soll ich genau in ein Array überführen?

              Kommentar


              • #8
                Indem du die Variable $bike anstatt auszugeben an einen Arrray anhängst, den du nach dem kompletten durchlauf der Schleife ausgibst.

                Kommentar


                • #9
                  Alles klar Danke!

                  Kommentar

                  Lädt...
                  X