Alle Elemente eines Arrays miteinander verknüpfen

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

  • Alle Elemente eines Arrays miteinander verknüpfen

    Hallo zusammen,

    ich habe ein Array mit folgendem Aufbau:

    Code:
    [test] => Array
            (
                [test_1] => Array
                    (
                        [0] => a
                    )
    
                [test_2] => Array
                    (
                        [0] => b
                        [1] => c
                    )
    
                [test_3] => Array
                    (
                        [0] => d
                        [1] => e
                        [2] => f
                    )
            )
    daraus soll nun ein Array wie folgt entstehen:

    Code:
    [test] => Array
            (
                [0] => Array
                    (
                        [0] => a
                        [1] => b
                        [2] => d
                    )
                [1] => Array
                    (
                        [0] => a
                        [1] => b
                        [2] => e
                    )
                [2] => Array
                    (
                        [0] => a
                        [1] => b
                        [2] => f
                    )
                [3] => Array
                    (
                        [0] => a
                        [1] => c
                        [2] => d
                    )
                [4] => Array
                    (
                        [0] => a
                        [1] => c
                        [2] => e
                    )
                [5] => Array
                    (
                        [0] => a
                        [1] => c
                        [2] => f
                    )
            )
    wobei die Anzahl der Elemente des original Arrays variieren kann.

    Weiß jemand, wie ich das realisieren kann?

    Viele Grüße

    webbies

  • #2
    Ich verstehe nicht ganz was du möchtest.

    aber array funktionen und schleifen sind deine Freunde
    "Nicht jeder Mensch kann und soll Programmieren[...]".

    Kommentar


    • #3
      naja, ich möchte jeden Eintrag aus test_1 mit jedem aus test_2 und test_3 kombinieren. Das geht soweit ich weiß nur mit Rekursion und das ist nicht meine Stärke

      Kommentar


      • #4
        Rekursion ist der richtige Weg du musst dir nur im klaren sein dass das 2. Array schnell gigantisch groß werden kann.
        "Nicht jeder Mensch kann und soll Programmieren[...]".

        Kommentar


        • #5
          ja, das ist mir klar, aber es geht leider nicht anders, da ich die Struktur so brauche

          Kommentar


          • #6
            Hier ein Fragment aus meiner Wühlkiste, evtl. hilft dir das ja weiter....
            Und wie man sieht, besteht keine Notwendigkeit für eine Rekursion.

            PHP-Code:
            <?php
            error_reporting
            (E_ALL);
            ini_set('display_errors'TRUE); // evtl. hilfreich

            $testarray= array();
            $testarray[]= array('a');
            $testarray[]= array('b','c');
            $testarray[]= array('d','e','f');

            function 
            array_perm($array)
            {
              
            $result = array();
              foreach(
            $array as $subarray)
              {
                
            $zwischenlager = array();
                if(empty(
            $result))
                  foreach(
            $subarray as $element)
                    
            $zwischenlager[] = array($element);
                else
                  foreach(
            $result as $alte)
                    foreach(
            $subarray as $element)
                      
            $zwischenlager[] = array_merge($alte,array($element));
                
            $result $zwischenlager;
              }
              return 
            $result;
            }


            ?>
            <pre> 
               <?php var_export(array_perm($testarray)) ?>
            </pre>
            Zuletzt geändert von combie; 09.05.2008, 14:38.
            Wir werden alle sterben

            Kommentar


            • #7
              wow, da hast du aber eine super Wühlkiste ... das funktioniert super

              Vielen dank für die so schnell Hilfe!

              Kommentar


              • #8
                Original geschrieben von webbies
                wow, da hast du aber eine super Wühlkiste ... das funktioniert super

                Vielen dank für die so schnell Hilfe!
                Ja... da ist schon einiges drin...
                Hoffendlich verstehst du die Funktion auch
                Wir werden alle sterben

                Kommentar


                • #9
                  ich habe mich jetzt mit der Funktion etwas beschäftigt. Leider hat sie den Nachteil, dass erst ganz am Ende die Kombinationen stehen. Ich kann also nicht sagen, dass ich nach 100 Kombinationen abbrechen möchte, wenn ein bestimmter Fall eintritt. So würde das Array natürlich endlos groß werden können
                  Ich bräuchte also etwas, was nach jedem Durchlauf eine Zeile wie a,b,c ausgibt. Die Funktion oben hat im ersten Durchlauf a, im zweiten a,b und erst im dritten das echte Ergebnis a,b,c
                  Zuletzt geändert von webbies; 09.05.2008, 15:33.

                  Kommentar


                  • #10
                    tja..
                    So ist das manchmal, wenn sich die Anforderungen ändern....

                    Viel Spass beim Umbau....
                    Wir werden alle sterben

                    Kommentar

                    Lädt...
                    X