Array-Werte kombinieren und in Strings ausgeben

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

  • TobiaZ
    antwortet
    PHP-Code:

    $combi 
    1;
    foreach(
    $feld as $x => $f)
    {
        
    $count[$x] = count($f['gueltig']);
        
    $mod[$x] = $combi;
        
    $combi*= $count[$x];
    }



    foreach(
    $feld as $x => $f)
    {
        
        
    $j 0;
        for(
    $i=0;$i<$combi;$i++)
        {

            
    $erg[$i].= $f['gueltig'][$j];

            if((
    $i+1) % $mod[$x] == 0)
                
    $j++;
            if(
    $j == $count[$x])
                
    $j=0;

        }


    Auch wenn der Threadstarter das Interesse verloren hat, vervollständige ich den Thread mal...

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    Ja hattest recht. Da war noch eine Kleinigkeit vergessen.

    Habs jetzt iterativ lösen können:

    PHP-Code:
    foreach($feld as $x => $f)
    {
        
        
    $j 0;
        for(
    $i=0;$i<$combi;$i++)
        {

            
    $erg[$i].= $f['gueltig'][$j];

            if((
    $i+1) % $mod[$x] == 0)
                
    $j++;
            if(
    $j == $count[$x])
                
    $j=0;

        }


    Feglen nur drei Hilfsvariablen, von denen ich mindestens die Bedeutung hören möchte.

    BTW: Ansonsten könntest du da auch mal rekursiv an die Sache rangehen...

    Einen Kommentar schreiben:


  • emil_der_hase
    antwortet
    Hallo TobiaZ,

    vielen Dank für Deine Hilfe, aber ich fürchte, ganz so einfach ist das doch nicht. Probier mal was passiert, wenn alle Felder die gleiche Anzahl von Belegungen haben - dann ergibt sich nur ein und dieselbe Wertekombination in x-facher Wiederholung.

    Leider kann ich nur erkennen, daß Dein Script nicht sauber funktioniert, eine Lösung hab ich aber immer noch nicht gefunden. Aber ich denke, Du hast mir zumindest schon ein Stück weitergeholfen.
    Zuletzt geändert von emil_der_hase; 11.11.2007, 22:27.

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    PHP-Code:
    $num 1;
    foreach(
    $feld as $f)
        
    $num*= count($f['gueltig']);
        
    foreach(
    $feld as $f)
    {
        
        
    $j 0;
        for(
    $i=0;$i<$num;$i++)
        {
            
    $k[$i].= $f['gueltig'][$j++];
            if(
    $j == count($f['gueltig']))
                
    $j 0;
                
        }


    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    Kommt der wert von feld[0] immer an erste stelle, oder kann der an jeder stelle stehen=

    Einen Kommentar schreiben:


  • emil_der_hase
    antwortet
    Ja, das hatte ich schon versucht. Da die Anzahl der Felder und Ausprägungen nicht fix ist, habe ich mich da leider totverschachtelt. Aber anscheinend gibts keinen anderen Weg

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    Benutz n verschachtelte schleifen und gut ist...

    Wobei n = count($feld)

    Einen Kommentar schreiben:


  • emil_der_hase
    hat ein Thema erstellt Array-Werte kombinieren und in Strings ausgeben.

    Array-Werte kombinieren und in Strings ausgeben

    Hallo, ich habe da ein ziemlich kniffeliges logisches Problem zu lösen, und seh mittlerweile den Wald vor lauter Bäumen nicht mehr.

    Ich muß sämtliche Werte eines mehrdimensionalen Arrays so miteinander kombinieren, daß jede mögliche Kombination mindestens einmal auftritt. Dabei soll aus den Kombinationen Datensätze entstehen.

    Klingt das unverständlich? Vermutlich... Ich versuchs mal mit einem Beispiel:

    Hier mal ein mögliches Array:
    $feld[0]['gueltig'][0] = 1;
    $feld[0]['gueltig'][1] = 2;
    $feld[0]['gueltig'][2] = 3;

    $feld[1]['gueltig'][0] = "ab";
    $feld[1]['gueltig'][1] = "cd";
    $feld[1]['gueltig'][2] = "ef";
    $feld[1]['gueltig'][3] = "gh";

    $feld[2]['gueltig'][0] = "1g";

    $feld[3]['gueltig'][0] = "test1";
    $feld[3]['gueltig'][1] = "test2";
    $feld[3]['gueltig'][2] = "test3";


    Die Werte sollen nun so kombiniert werden, daß ein Textstrings etwa in der Art herauskommt:

    Kombination 1: "1ablgtest1"
    Kombination 2: "2ablgtest1"
    Kombination 3: "3ablgtest1"
    Kombination 4: "1cdlgtest1"
    Kombination 5: "2eflgtest1"
    Kombination 6: "3ghlgtest1"
    ...

    Mir fehlt jetzt einfach der Durchblick, wie ich am elegantesten alle möglichen Kombinationen erzeugen kann. Klingt das nur so kompliziert, oder ist es das auch

    Ich habe bei meinen bisherigen Lösungsversuchen Schleifenkonstrukte erzeugt, die jede Teppichweberein vor Neid erblassen lassen würde

    Hat hier vielleicht jemand 'ne Idee bzw. Lösungsansatz, wie ich diese Wertekombinationen hinbekommen kann?
Lädt...
X