3 Stimmen

Die Erhaltung aller möglichen Kombinationen von N Elementen in X Gruppen

Ich habe eine Liste von Gruppen, die sich in der Anzahl der Elemente und Elemente in diesen Gruppen, die sich ebenfalls in der Anzahl unterscheiden, variieren können. Ich habe mir den Kopf darüber zerbrochen, wie ich alle möglichen Kombinationen von 1 Element aus jeder Gruppe erhalten kann.

Bonus: Ich benötige auch alle Kombinationen, die nicht jedes Element aus einer Gruppe enthalten.

Ich habe gesehen und getan, was bereits erwähnt wurde, aber das erfordert, die Anzahl der Gruppen von Anfang an zu kennen.

Um genauer zu sein, möchte ich Produkte mit genauen Preisen generieren, die auf Produktoptionen basieren. Hier ist eine Beispielliste:

Gruppen-/Elementbeispiel

Es würde also Produkte generieren wie:

UV-Beschichtung, Menge 500, Farbe 4:0
UV-Beschichtung, Menge 500, Farbe 4:1
etc...

Jede dieser Gruppen hat eine ID, und jedes Element hat eine Group_Item_ID. Daher kann ich sie in einem Array wie folgt platzieren:

$selections[1][...]  // 1 = Beschichtung
$selections[2][...]  // 2 = Menge
// ... = alle ausgewählten Elemente in der Gruppe

Hoffentlich habe ich es ausreichend erklärt. Ich kann einfach nicht verstehen, wie ich das machen soll, wenn auch die Anzahl der Gruppen variabel ist.

Hier ist ein Beispiel-Array für die Gruppen und ihre Elemente:

Array
(
[0] => Array
    (
        [0] => 2
        [1] => 3
    )

[1] => Array
    (
        [0] => 10
        [1] => 11
        [2] => 12
    )

[2] => Array
    (
        [0] => 16
        [1] => 17
    )

[3] => Array
    (
        [0] => 19
        [1] => 20
    )
)

4voto

Mewp Punkte 4715

Versuchen Sie dies:

function c($groups, $prefix='')
{
    $result = array();
    $group = array_shift($groups);
    foreach($group as $selected) {
        if($groups) {
            $result = array_merge($result, c($groups, $prefix . $selected. ' '));
        } else {
            $result[] = $prefix . $selected;
        }
    }
    return $result;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X