Ankündigung

Einklappen
Keine Ankündigung bisher.

Arrays zusammenfügen und verarbeiten

Einklappen

Neue Werbung 2019

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

  • Arrays zusammenfügen und verarbeiten

    Hallo zusammen,

    ich hab ein kleines Problemchen.

    Ich habe drei Arrays:
    Array1 ( [0] => 9835 [1] => 9834 [2] => 9833 [3] => 9833 [4] => 9833 [5] => 9835 [6] => 9836)

    Array2 ( [0] => 0.17 [1] => 2 [2] => 1 [3] => 1.5 [4] => 0.4 [5] => 1 [6] => 1.1 )

    Array3 ( [0] => Text0 [1] => Text1 [2] => Text2 [3] => Tex3 [4] => Text4 [5] => Text5 [6] => Text6 )

    Die Daten mit dem gleichen Index gehören zusammen, sprich der Wert 0.17 gehört zu 9835, der Wert 2 gehört zu 9834.

    Jetzt möchte ich zum Schluß erreichen, dass die Werte aus Array2 mit dem selben Wert in Array1 zusammengezählt werden und in ein neues Array gespeichert werden.
    Zusätzlich sollen die Texte aus Array3 mit dem selben Wert in Array1 zusammengesetzt und ebenfalls in dem neuen Array bei dem jeweiligen Datensatz gespeichert werden.
    In etwa so:

    9835: 1.17 ( also 0.17+1); Text0, Text5
    9834: 2; Text1
    9833: 2.9 ( also 1+1.5+0.4); Text2, Text3, Text4
    9836: 1.1; Text6


    Wie kann ich das machen?

    Schon mal besten Dank und ich hoffe ihr könnt mit meiner Beschreibung was anfangen.

  • #2
    Wie sieht denn dein bisheriger Ansatz aus?

    Ich würde mir erstmal das erste Array umformen, damit alle zusammengehörigen Indices auch wirklich beisammen liegen.
    Dann durchsucht man alle anderen Arrays mit Hilfe dieser Indices. Ergebnisse wandern in ein separates Array.
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Mein Ansatz momentan ist, dass ich erstmal die ersten zwei Arrays miteinander verbinde, da hab ich dann:
      Array
      (
      [9835] => 0.17
      [9834] => 2
      [9833] => Array
      (
      [0] => 1
      [1] => 2
      )
      )

      Jetzt steh ich aber grad aufm Schlauch, wie ich jetzt weitermachen soll. Mit zwei foreach klappts ja ned ganz, weil es nicht immer ein zweites (inneres) Array gibt.

      Kommentar


      • #4
        Code pls...
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Das wäre mein Lösungsansatz es führt zum Zeil

          PHP-Code:

          $arr 
          = array(
              array ( 
          9835983498339833983398359836),
              array ( 
          0.17211.50.411.1 ),
              array ( 
          'Text0''Text1''Text2''Text3''Text4''Text5''Text6' )
          );

          #var_dump($arr);

          $temp     = array();
          $output = array();
          /*
          relevante schlüssel zusammen führen und werte zuweisen
          */
          foreach ($arr[0] as $index => $value_1) {

              
          $temp[$value_1]['value'][]     = $arr[1][$index];
              
          $temp[$value_1]['text'][]     = $arr[2][$index];

          }

          /*
          Die Werte zusammen rechnen und Texte verbinden, und alles zum schluß zusammen zu ein String verbinden
          */
          foreach ($arr[0] as $index => $value_1) {

              
          $temp[$value_1]['value']     = is_array($temp[$value_1]['value'])     ? array_sum($temp[$value_1]['value'])         : $temp[$value_1]['value'];
              
          $temp[$value_1]['text']     = is_array($temp[$value_1]['text'])     ? implode(", "$temp[$value_1]['text'])     : $temp[$value_1]['text'];

              
          $output[$value_1] = $temp[$value_1]['value']." : ".$temp[$value_1]['text'];

          }

          #print_r($temp);
          print_r($output); 
          AUSGABE:
          PHP-Code:
          array (
              [
          9835] => 1.17 Text0Text5
              
          [9834] => Text1
              
          [9833] => 2.9 Text2Text3Text4
              
          [9836] => 1.1 Text6

          Leider kenne ich die ausgangs Situation nicht daher bin ich mal davon ausgegangen das alle werte in ein über geortetes Array sind.

          Kommentar

          Lädt...
          X