array_key_exists auf mehrere arrays anwenden?

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

  • array_key_exists auf mehrere arrays anwenden?

    Hallo erstmal,

    Ich hab da eine simple Frage...
    Kann man mehrere Arrays irgentwie zusammenfügen und in diesem dann nach einem Key suchen?
    Also ich meine das ungefähr so:

    PHP Code:
    $array1 = array("bla1""bli1""blub1");
    $array2 = array("bla2""bli2""blub2");
    ...
    $array10 = array("bla10""bli10""blub10");

    $array_all = array($array1$array2, ..., $array10);

    if(
    array_key_exists("bla2"$array_all)) echo "Gefunden"
    Geht sowas?

  • #2
    Ginge schon, hat in deinem Beispiel aber keinen Sinn, da dein Array $array_all nur die Keys 0 bis 9 hat.

    http://php.net/manual/en/function.array.php

    Comment


    • #3
      wieso nur bis 9?
      Bei dem Link steht aber nix über mein Problem, zumindest find ichs net.. oder ist das das hier?

      PHP Code:
      $fruits = array (
         
      "fruits"  => array("a" => "orange""b" => "banana""c" => "apple"),
         
      "numbers" => array(123456),
         
      "holes"  => array("first"=> "second""third")
      ); 
      Dann könnt ich es auch so machen:

      PHP Code:
      $array_all = array (
        
      "array1" => array("bla1""bli1""blub1");
        
      "array2" => array("bla2""bli2""blub2");
        ...
        
      "array10" => array("bla10""bli10""blub10");
      );

      if(
      array_key_exists("bla2"$array_all)) echo "Gefunden"

      Comment


      • #4
        Könntest du, aber dann existiert der Key "bla2" trotzdem nicht sondern nur die Keys "array1" bis "array10".
        "bla2" ist einfach kein Key sondern ein Wert. Und zwar der von $array_all['array2'][0].

        Mir scheint, du hast das Prinzip von Arrays und Keys noch nicht ganz verstanden. Lies dir die oben gelinkte Seite mal komplett durch, auch die Codebeispiele und Userkommentare.

        Comment


        • #5
          PHP Code:
          $array[0] = array("bla1""bli1""blub1");
          $array[1] = array("bla2""bli2""blub2");
          ...
          $array[10] = array("bla10""bli10""blub10");

          $gefunden false;
          foreach(
          $array AS $search)
            if(
          in_array("bla2"$search)) $gefunden true;
            
          if(
          $gefunden) echo ("Gefunden !!!"); 
          versuchs mal so


          EDIT:

          Original geschrieben von onemorenerd
          Wenn du in zonthors Code das array_key_exists() durch in_array() ersetzt, mags hinhauen.
          du hast natürlich recht

          Last edited by zonthor; 30-04-2006, 15:44.

          Comment


          • #6
            Wenn du in zonthors Code das array_key_exists() durch in_array() ersetzt, mags hinhauen.

            Comment


            • #7
              Oder wir machen 2 functionen, die beide Fälle abdecken
              und die suche nach Werten und Schlüssel in multidemensionalen arrays erlauben
              PHP Code:
              #----------------------
              # sucht ein wert in multidemensionalem array
              # @return boolean
              #-------------------------------------
              function multi_in_array($wert,$array){
                if(
              is_array($array)){
                if(
              in_array($wert,$array))return true;
                 foreach(
              $array as $w){
                  if(
              multi_in_array($wert,$w))return true;
                 }
                }
                return 
              false;
              }

              #----------------------
              # sucht ein Slüssel in multidemensionalem array
              # @return boolean
              #-------------------------------------
              function multi_kay_exist($kayname,$array){
                if(
              is_array($array)){
                if(
              array_key_exists($kayname,$array))return true;
                 foreach(
              $array as $w){
                  if(
              multi_kay_exist($kayname,$w))return true;
                 }
                }
                return 
              false;
              }
              #------------------------------------

              //test
              $array[0] = array("bla1""bli1""blub1");
              $array[1] = array("bla2""bli2""blub2");
              $array[3] = array("bla10""bli10", array("a"=>"blub10"));

              if(
              multi_in_array("blub10",$array))echo "blub10 gefunden<br />";
              else echo 
              "blub10 nicht gefunden<br />";
              if(
              multi_in_array("blub20",$array))echo "blub20 gefunden<br />";
              else echo 
              "blub20 nicht gefunden<br />";
              if(
              multi_kay_exist("a",$array))echo "kay 'a' gefunden<br />";
              else echo 
              "kay 'a' nicht gefunden<br />";
              if(
              multi_kay_exist(1,$array))echo "kay 1 gefunden<br />";
              else echo 
              "kay 1 nicht gefunden<br />";
              if(
              multi_kay_exist(40,$array))echo "kay 40 gefunden<br />";
              else echo 
              "kay 40 nicht gefunden<br />"
              Last edited by Slava; 30-04-2006, 18:31.
              Slava
              bituniverse.com

              Comment


              • #8
                Danke dir zonthor ,

                Deine Möglichkeit ist ein bisschen zu komplex... trozdem auch dir vielen dank Slava

                Comment


                • #9
                  Original geschrieben von Schanz

                  Deine Möglichkeit ist ein bisschen zu komplex... trozdem auch dir vielen dank Slava
                  warum komplex?
                  das sind nur 2 functionen, die du einfach benutzen kannst!!!
                  wenn die function von innen unverständlich ist, dann benutze sie als black-box, dich müssen nur name, parameter, rückgabe-typ und endergebnis interessieren.
                  echo oder print hast du auch bestimmt schon benutzt, ohne zu wissen wie diese functionen wirklich aufgebaut sind.

                  Oder hat hier jemand andere Meinung?
                  Last edited by Slava; 30-04-2006, 22:42.
                  Slava
                  bituniverse.com

                  Comment


                  • #10
                    für das zusammenfügen gibt es array_merge() in den Array-Funktionen .

                    http://www.php-resource.de/manual.ph...on.array-merge
                    http://www.php.net/manual/de/function.array-merge.php

                    für das Suchen in den Daten: array_search, und wie schon genannt in_array
                    für das Suchen in den Keys (hier aber n/a) wie schon genannt array_key_exists

                    Viel Erfolg bei Zusammenfügen der arrays mit array_merge, und dem Suchen mit array_search.

                    Comment


                    • #11
                      Ja Slave das habe ich... Vieleicht habe ich mich falsch ausgedrückt.... Deine Lösung ist natürlich auch gut aber die von zonthor tuts auch nur mit weniger code...
                      Ja vierteln genau das hab ich gesucht.. komisch das ich das net gefunden habe
                      Aber jetzt nochetwas... Ich habe jetzt den Lösungsweg von zonthor genommen, gibt es da eine möglichkeit herauszufinden in welcher Variable das gefundene Wort steht? also:

                      PHP Code:
                      $array[0] = array("bla1""bli1""blub1");
                      $array[1] = array("bla2""bli2""blub2");
                      ...
                      $array[10] = array("bla10""bli10""blub10");

                      $gefunden false;
                      foreach(
                      $array AS $search)
                        if(
                      in_array("bla2"$search)) $gefunden true;
                        
                      if(
                      $gefunden) echo ("Gefunden !!! und steht in Variable $array[1]"); 

                      Comment


                      • #12
                        PHP Code:
                        $array[0] = array("bla1""bli1""blub1");
                        $array[1] = array("bla2""bli2""blub2");
                        ...
                        $array[10] = array("bla10""bli10""blub10");

                        foreach (
                        $array as $k => $search)
                          if (
                        in_array("bla2"$search)) {
                             echo (
                        'Gefunden in $array['.$k.'].');
                             break;
                          } 

                        Comment


                        • #13
                          Juchu, funktioniert Prima
                          Danke, danke, danke

                          Comment

                          Working...
                          X