array suche

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #3
      Originally posted by combie View Post
      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

      Comment


      • #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]

        Comment


        • #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

          Comment


          • #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]

            Comment


            • #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
              Last edited by Dj Mik; 22-12-2010, 19:08.
              http://www.miks-world.ch

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

              http://www.mediamiks.de.vu

              Comment


              • #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.

                Comment


                • #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

                  Comment


                  • #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

                    Comment


                    • #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 ???
                      Last edited by Dj Mik; 23-12-2010, 00:21.
                      http://www.miks-world.ch

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

                      http://www.mediamiks.de.vu

                      Comment


                      • #12
                        Originally posted by Dj Mik View Post
                        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

                        Comment


                        • #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>"
                          Last edited by combie; 23-12-2010, 09:53.
                          Wir werden alle sterben

                          Comment

                          Working...
                          X