Heim > Artikel > Backend-Entwicklung > Wie generiert man alle Kombinationen aus einem 1D-Array in PHP mithilfe einer rekursiven Tiefensuche?
Erhalten aller Kombinationen eines 1D-Arrays
Die Aufgabe, alle erreichbaren Kombinationen aus einem eindimensionalen Array zusammenzustellen, kann durch die Verwendung von a gelöst werden rekursive Methode. Dieser Ansatz umfasst einen Tiefensuchansatz, der jede mögliche Kombination untersucht und gleichzeitig die Integrität der Anordnung jedes Elements beibehält.
Betrachten Sie den folgenden PHP-Code, der die oben genannte Aufgabe effektiv erledigt:
<code class="php"><?php $array = array('Alpha', 'Beta', 'Gamma', 'Sigma'); function depth_picker($arr, $temp_string, &$collect) { if ($temp_string != "") $collect []= $temp_string; for ($i=0, $iMax = sizeof($arr); $i < $iMax; $i++) { $arrcopy = $arr; $elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element if (sizeof($arrcopy) > 0) { depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect); } else { $collect []= $temp_string. " " . $elem[0]; } } } $collect = array(); depth_picker($array, "", $collect); print_r($collect); ?></code>
Diese Implementierung funktioniert, indem sie das Eingabearray rekursiv durchläuft und jedes Element und seine möglichen Auswirkungen auf den gesamten Kombinationssatz analysiert. Wenn ein Element in die Kombination aufgenommen wird, wird zur weiteren Untersuchung ein neues Array ohne dieses Element erstellt. Dieser Prozess wird fortgesetzt, bis alle Elemente untersucht und das gesamte Spektrum an Kombinationen erfasst ist.
Mit diesem Ansatz können Sie erfolgreich jede mögliche Kombination aus dem bereitgestellten 1D-Array abrufen und so die Anforderungen an die Beibehaltung der Originalsequenz erfüllen und mit unterschiedlichen Arrangements.
Das obige ist der detaillierte Inhalt vonWie generiert man alle Kombinationen aus einem 1D-Array in PHP mithilfe einer rekursiven Tiefensuche?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!