Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten aus 2 Arrays zuordnen und in ein neues Array speichern

Einklappen

Neue Werbung 2019

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

  • Daten aus 2 Arrays zuordnen und in ein neues Array speichern

    Hallo!

    Habe folgendes Problem:

    Ich habe 2 Arrays (ausgelesen aus einer Log-Datei).
    Nun möchte ich bestimmte Werte aus Array1 zu bestimmten Werten im Array2 zuordnen und in ein neues Array3 ablegen.

    Das ganze hat folgende Struktur:

    $array1["Name1"]["Kategorie1"]["Bezeichnung1"] = "Wert1"
    $array1["Name1"]["Kategorie1"]["Bezeichnung2"] = "Wert2"
    $array1["Name1"]["Kategorie1"]["Bezeichnung3"] = "Zahl1:Zahl2|Zahl3:Zahl4|Zahl5:Zahl6|"

    $array1["Name1"]["Kategorie2"]["Bezeichnung1"] = "Wert3"
    $array1["Name1"]["Kategorie2"]["Bezeichnung2"] = "Wert4"
    $array1["Name1"]["Kategorie2"]["Bezeichnung3"] = "Zahl11:Zahl12|Zahl13:Zahl14|"

    $array1["Name1"]["Kategorie3"]["Bezeichnung1"] = "Wert5"
    $array1["Name1"]["Kategorie3"]["Bezeichnung2"] = "Wert6"
    $array1["Name1"]["Kategorie3"]["Bezeichnung3"] = "Zahl21:Zahl22|"

    $array1["Name1"]["Kategorie4"]["Bezeichnung1"] = "Wert7"
    $array1["Name1"]["Kategorie4"]["Bezeichnung2"] = "Wert8"
    $array1["Name1"]["Kategorie4"]["Bezeichnung3"] = "Zahl31:Zahl32|Zahl33:Zahl34|"


    $array2["andererName1"]["andereBezeichnung1"] = "Wert11"
    $array2["andererName1"]["andereBezeichnung2"] = "Kategorie1"

    $array2["andererName2"]["andereBezeichnung1"] = "Wert12"
    $array2["andererName2"]["andereBezeichnung2"] = "Kategorie2"

    $array2["andererName3"]["andereBezeichnung1"] = "Wert13"
    $array2["andererName3"]["andereBezeichnung2"] = "Kategorie3"

    $array2["andererName4"]["andereBezeichnung1"] = "Wert14"
    $array2["andererName4"]["andereBezeichnung2"] = "Kategorie4"

    So soll das dritte Array mit den zugeordneten Daten aussehen:

    $array3["Kategorie1"]["Beschreibung1"] = "Zahl1", "Zahl3", "Zahl5"
    $array3["Kategorie1"]["Beschreibung2"] = "Zahl2", "Zahl4", "Zahl6"
    $array3["Kategorie1"]["Beschreibung3"] = "Wert11"

    $array3["Kategorie2"]["Beschreibung1"] = "Zahl11", "Zahl13"
    $array3["Kategorie2"]["Beschreibung2"] = "Zahl12", "Zahl14"
    $array3["Kategorie2"]["Beschreibung3"] = "Wert12"

    $array3["Kategorie3"]["Beschreibung1"] = "Zahl21"
    $array3["Kategorie3"]["Beschreibung2"] = "Zahl22"
    $array3["Kategorie3"]["Beschreibung3"] = "Wert13"

    $array3["Kategorie4"]["Beschreibung1"] = "Zahl31", "Zahl33"
    $array3["Kategorie4"]["Beschreibung2"] = "Zahl32", "Zahl34"
    $array3["Kategorie4"]["Beschreibung3"] = "Wert14"


    Hat jmd ne Idee?


  • #2
    kann man das auch kürzer und schnell verständlich formulieren?

    Kommentar


    • #3
      Ich denke wenn ichs kürzer beschreibe geht das, was ich meine verloren.

      Mir geht es darum: Alles was in $array1 und $array2 ROT ist soll der Name des ersten "Unterarrays" im $array3 werden.

      Die Werte sollen sich aus den GRÜNEN und BRAUNEN Werten bilden, wobei diese in Beziehung zur Kategorie stehen sollen.

      Im $array1 müssen ausserdem die einzelnen Zahlen aus der Menge extrahiert werden (1:2|4:2| soll dann jeweils im $array3 getrennt erscheinen 1,4 und 2,2)

      Anders kann ich es nicht beschreiben....

      Kommentar


      • #4
        PHP-Code:
        <?php

        $array1
        ["Name1"]["Kategorie1"]["Bezeichnung1"] = "Wert1";
        $array1["Name1"]["Kategorie1"]["Bezeichnung2"] = "Wert2";
        $array1["Name1"]["Kategorie1"]["Bezeichnung3"] = "Zahl1:Zahl2|Zahl3:Zahl4|Zahl5:Zahl6|";

        $array1["Name1"]["Kategorie2"]["Bezeichnung1"] = "Wert3";
        $array1["Name1"]["Kategorie2"]["Bezeichnung2"] = "Wert4";
        $array1["Name1"]["Kategorie2"]["Bezeichnung3"] = "Zahl11:Zahl12|Zahl13:Zahl14|";

        $array1["Name1"]["Kategorie3"]["Bezeichnung1"] = "Wert5";
        $array1["Name1"]["Kategorie3"]["Bezeichnung2"] = "Wert6";
        $array1["Name1"]["Kategorie3"]["Bezeichnung3"] = "Zahl21:Zahl22|";

        $array1["Name1"]["Kategorie4"]["Bezeichnung1"] = "Wert7";
        $array1["Name1"]["Kategorie4"]["Bezeichnung2"] = "Wert8";
        $array1["Name1"]["Kategorie4"]["Bezeichnung3"] = "Zahl31:Zahl32|Zahl33:Zahl34|";


        $array2["andererName1"]["andereBezeichnung1"] = "Wert11";
        $array2["andererName1"]["andereBezeichnung2"] = "Kategorie1";

        $array2["andererName2"]["andereBezeichnung1"] = "Wert12";
        $array2["andererName2"]["andereBezeichnung2"] = "Kategorie2";

        $array2["andererName3"]["andereBezeichnung1"] = "Wert13";
        $array2["andererName3"]["andereBezeichnung2"] = "Kategorie3";

        $array2["andererName4"]["andereBezeichnung1"] = "Wert14";
        $array2["andererName4"]["andereBezeichnung2"] = "Kategorie4";


        $array3["Kategorie1"]["Beschreibung1"] = array("Zahl1""Zahl3""Zahl5");
        $array3["Kategorie1"]["Beschreibung2"] = array("Zahl2""Zahl4""Zahl6");
        $array3["Kategorie1"]["Beschreibung3"] = "Wert11";

        $array3["Kategorie2"]["Beschreibung1"] = array("Zahl11""Zahl13");
        $array3["Kategorie2"]["Beschreibung2"] = array("Zahl12""Zahl14");
        $array3["Kategorie2"]["Beschreibung3"] = "Wert12";

        $array3["Kategorie3"]["Beschreibung1"] = array("Zahl21");
        $array3["Kategorie3"]["Beschreibung2"] = array("Zahl22");
        $array3["Kategorie3"]["Beschreibung3"] = "Wert13";

        $array3["Kategorie4"]["Beschreibung1"] = array("Zahl31""Zahl33");
        $array3["Kategorie4"]["Beschreibung2"] = array("Zahl32""Zahl34");
        $array3["Kategorie4"]["Beschreibung3"] = "Wert14";


        $array_temp = array();
        foreach(
        $array2 as $value)
                
        $array_temp[$value["andereBezeichnung2"]] = $value["andereBezeichnung1"];


        $array3 = array();
        foreach(
        $array1["Name1"] AS $key => $value) {
                
        $array3[$key] = array();
                
        $zahlen preg_split("/:|\|/",$value["Bezeichnung3"],-1,PREG_SPLIT_NO_EMPTY);
                
        $beschreibung1 = array();
                
        $beschreibung2 = array();
                foreach(
        $zahlen as $key2 => $value2) {
                        if(
        $key2%2)
                                
        $beschreibung2[] = $value2;
                        else
                                
        $beschreibung1[] = $value2;
                }
                
        $beschreibung3 $array_temp[$key];
                
        $array3[$key]["Beschreibung1"]=$beschreibung1;
                
        $array3[$key]["Beschreibung2"]=$beschreibung2;
                
        $array3[$key]["Beschreibung3"]=$beschreibung3;
        }

        print_r($array3);


        ?>

        Kommentar


        • #5
          Vielen Dank! Läuft wunderbar, bis auf ein kleines Problem:

          if($key2%2)

          diese Modolo-Op nützt mir leider nichts, da die Zahlen NICHT nach gerade oder ungerade sortiert werden. leider :wink:
          Vielmehr soll die Zahl vorm : immer Beschreibung1 und die Zahl nach dem : Beschreibung 2.

          Ich schau mal ob ich das selber hinbekomme

          Nochmals DANKE!

          Kommentar


          • #6
            pfft es bringt sehr wohl etwas, weil der KEY überprüft wird, nicht die zahl.

            Ich habe mir schon was dabei gedacht

            und die keys werden immer in der richtigen reihenfolge sein, wenn alle zahlen auch existieren (probleme würden also konstellationen wie "zahl1zahl2" bringen.

            Kommentar


            • #7
              Jo, hast recht! Das mit dem $key hab ich wohl überlesen....

              Danke Dir für Deine Hilfe!

              Kommentar

              Lädt...
              X