array suche

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

  • array suche

    hi

    ich habe folgendes als Array

    ARN-125-WHITE-LF.jpg
    ARN-125-WHITE-LF2.jpg
    ARN-125-WHITE-R.jpg
    ARN125-BLACK-LF.jpg
    ARN125-BLACK-R.jpg
    ARN125-BLACK-RF.jpg
    ARN125-BLUE-SILVER-LF.jpg
    ARN125-BLUE-SILVER-R.jpg
    ARN125-BLUE-SILVER-RF.jpg
    ARN125-ORANGE-H.jpg
    ARN125-ORANGE-LF.jpg
    ARN125-ORANGE-R.jpg
    ARN125-ORANGE-RF.jpg
    Gibt es eine möglichkeit, dass ich nach "black" suchen kann und auch black ausgegeben wird?
    http://www.miks-world.ch

    http://www.genki-board.de.vu

    http://www.mediamiks.de.vu

  • #2
    array_filter()
    stripos()
    Wir werden alle sterben

    Kommentar


    • #3
      Zitat von combie Beitrag anzeigen
      array_filter()
      stripos()
      danke!

      aber ... ich komme nich drauf, wie das mit array_filter() funktionieren sollte
      Ich müsste ja die 4 verschiedenen Farben in verschiedenen Arrays machen
      white, blue, balck, orange

      weisst du gerade, wie ich das mache?
      http://www.miks-world.ch

      http://www.genki-board.de.vu

      http://www.mediamiks.de.vu

      Kommentar


      • #4
        Hallo,

        vielleicht musst du erstmal genauer darlegen, was du am Ende raushaben willst.

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          oke ...

          ich habe folgendes im Array welches die Variable $inhalt trägt:

          ARN-125-WHITE-LF.jpg
          ARN-125-WHITE-LF2.jpg
          ARN-125-WHITE-R.jpg
          ARN125-BLACK-LF.jpg
          ARN125-BLACK-R.jpg
          ARN125-BLACK-RF.jpg
          ARN125-BLUE-SILVER-LF.jpg
          ARN125-BLUE-SILVER-R.jpg
          ARN125-BLUE-SILVER-RF.jpg
          ARN125-ORANGE-H.jpg
          ARN125-ORANGE-LF.jpg
          ARN125-ORANGE-R.jpg
          ARN125-ORANGE-RF.jpg
          dort sieht man, dass ews verschiedene farben der ARN125 gibt
          - white
          - black
          - blue-silver
          - orange

          ich will jetzt eine Variable, welche alle black anzeigt.

          Code:
          foreach($inhalt as $ausdruck)
            echo $ausdruck,"<br>";
          dieser Code zeigt mir alle Dateinamen an (siehe Anfang).

          Wie mache ich nun eine Variable, die nur z.B. die "Black" anzeigt?
          http://www.miks-world.ch

          http://www.genki-board.de.vu

          http://www.mediamiks.de.vu

          Kommentar


          • #6
            Also doch array_filter. Wenn du das im Handbuch nachschlägst, findest du auch Anwendungsbeispiele. Wenn du es viermal aufrufst, kannst du vier neue Arrays erzeugen, die jeweils eine Farbe enthalten. Du kannst es aber auch mit einem Gruppenwechsel (Google-Futter) erledigen, dann musst du vorher nicht einmal wissen, welche Farben drin sein können.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              PHP-Code:
              $farbe "black";
              foreach(
              $inhalt as $ausdruck)
                echo 
              $ausdruck,"<br>";

              $filterei array_filter($ausdruck$farbe);
              echo 
              $filterei
              Fehler:

              Warning: array_filter() [function.array-filter.php]: The second argument, 'black', should be a valid callback in /home/keewayr/www/keeway-roller.ch/blauein.php on line 19
              Zuletzt geändert von Dj Mik; 22.12.2010, 20:08.
              http://www.miks-world.ch

              http://www.genki-board.de.vu

              http://www.mediamiks.de.vu

              Kommentar


              • #8
                Nein, der zweite Parameter von array_filter ist nicht vom Typ String!
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Muss ich demfall eine Funktion erstellen?

                  PHP-Code:
                  function black($var)
                  {
                      return(
                  $var 1);

                  z.B.

                  oder wie?
                  http://www.miks-world.ch

                  http://www.genki-board.de.vu

                  http://www.mediamiks.de.vu

                  Kommentar


                  • #10
                    array_filter oder strpos

                    Ja....
                    Der Callback gibt true oder false zurück,
                    je nach dem was Du für richtig hälst.

                    PHP Doku:: Filtert Elemente eines Arrays mittels einer Callback-Funktion - function.array-filter.html

                    In Deinem Fall reicht ein einfaches:
                    PHP-Code:
                    $inhalt = array();
                    $inhalt[]="ARN-125-WHITE-LF.jpg";
                    $inhalt[]="ARN-125-WHITE-LF2.jpg";
                    $inhalt[]="ARN-125-WHITE-R.jpg";
                    $inhalt[]="ARN125-BLACK-LF.jpg";
                    ...

                    $color 'black';
                    $result = array();
                    foreach(
                    $inhalt as $ausdruck){
                     if(
                    strpos(strtoupper($ausdruck),strtoupper($color))){
                      echo 
                    "\n".$ausdruck." hat die Farbe ".$color."<br>";
                      
                    $result[] = $ausdruck;
                     }
                    }
                    print_r($result); 
                    meine Tochter: Mia Viktoria Neidl
                    und ich: Neidl Reinhard - Webprogrammierung

                    Kommentar


                    • #11
                      du bist mein Held!! das klappt ja tatsächlich!!!!
                      Ich wäre nie darauf gekommen.

                      sag mir nur noch was kleines ...
                      Hab ich das richtig verstanden?

                      PHP-Code:
                      // Filtern
                      $farbe "black"//nach was gesucht und gefiltert werden soll
                      $result = array(); //Sinnlos ... keine Ahnung für was ich das brauche. hab ich raus genommen.
                      foreach($inhalt as $ausdruck) { //schleife bis alles herausgegeben wurde und an $ausdruck übergeben wurde
                          
                      if(strpos(strtoupper($ausdruck),strtoupper($farbe))) { //strpos -> die suchfunktion|strtoupper->wandelt buchstaben von klein auf gross um
                              
                      echo "\n".$ausdruck." hat die Farbe ".$farbe."<br>"//was macht genau das "\n"? 
                              
                      }
                          }
                      print_r($result);//Sinnlos...brauch ich nicht. 
                      gibt nur fehlermeldung mit der variable $result
                      Aber so ist es jetzt wie gewünscht.

                      Wenn ich jetzt bei der $farbe "blue" eingebe, dann werden mir alle 3 Bilder vom blauen Roller angeziegt.
                      Genau das was ich wollte.

                      Was ich nicht verstehe, warum nichts angezeigt wird, wenn ich z.B. "arn" eingebe
                      sucht er nicht von anfang an ???
                      Zuletzt geändert von Dj Mik; 23.12.2010, 01:21.
                      http://www.miks-world.ch

                      http://www.genki-board.de.vu

                      http://www.mediamiks.de.vu

                      Kommentar


                      • #12
                        Zitat von Dj Mik Beitrag anzeigen
                        Was ich nicht verstehe, warum nichts angezeigt wird, wenn ich z.B. "arn" eingebe
                        sucht er nicht von anfang an ???
                        PHP-Code:
                        if(strpos(strtoupper($ausdruck),strtoupper($farbe))){
                         ...

                        erste Position wird mit '0' (Zahl Null) angegebn
                        und das ist in der if (false)

                        also ändern in:
                        PHP-Code:
                        if(is_int(strpos(strtoupper($ausdruck),strtoupper($farbe)))){
                        ...

                        Da Ergebnis eine Zahl ist -> Hurra,
                        auch an der ersten Postion im Text.

                        P.S:
                        Doku lesen bei php.net oder:
                        PHP Doku:: Sucht das erste Vorkommen des Suchstrings - function.strpos.html
                        meine Tochter: Mia Viktoria Neidl
                        und ich: Neidl Reinhard - Webprogrammierung

                        Kommentar


                        • #13
                          Muss ich demfall eine Funktion erstellen?

                          PHP-Code:
                          function black($var

                              return(
                          $var 1); 

                          z.B.
                          oder wie?
                          Du solltest erstmal Grundlagen Arbeit machen, damit du überhaupt das Handbuch verstehst.

                          @rei
                          Der doppelte strtoupper() ist überflüssig!
                          Nicht umsonst habe ich oben stripos() genannt und nicht strpos()!

                          is_int()... naja....
                          Kann ich durch gehen lassen.
                          Man will ja nicht wissen, ob eine Integer Zahl raus kommt, sondern ob das Ergebnis ungleich false ist.
                          In diesem konkreten Fall ist das allerdings völlig gleichwertig.


                          Und nach dem hier was laufendes zusammen gekommen ist, auch mal meine Vorschläge....

                          PHP-Code:
                          function arrayFilterByString(Array $array,$filterString)
                          {
                            
                          $callback = function ($item) use ($filterString)
                                        {
                                          return 
                          false !== stripos($item,$filterString);
                                        };
                            return 
                          array_filter($array,$callback);
                          }

                          $nadel 'black';
                          $suchergebnis arrayFilterByString($heuhaufen,$nadel);
                          foreach(
                          $suchergebnis as $ausdruck)
                            echo 
                          $ausdruck,"<br>"
                          PHP-Code:
                          class StringFilterIterator extends FilterIterator
                          {
                              protected 
                          $suchbegriff '';   
                              
                              public function 
                          __construct(Iterator $iterator,$suchbegriff)
                              {
                                
                          $this->suchbegriff $suchbegriff;
                                
                          parent::__construct($iterator);
                              }
                              
                              public function 
                          accept()
                              {
                                 return 
                          false !== stripos($this->current(),$this->suchbegriff);
                              }
                          }

                          $nadel 'black';

                          $iterator = new StringFilterIterator(
                                          new 
                          ArrayIterator($heuhaufen),$nadel);

                          foreach(
                          $iterator as $ausdruck)
                            echo 
                          $ausdruck,"<br>"
                          Zuletzt geändert von combie; 23.12.2010, 10:53.
                          Wir werden alle sterben

                          Kommentar

                          Lädt...
                          X