Florian: Rekursive Array-Abfrage

Beitrag lesen

Hi Bademeister,

dank dir für deine schlauen Worte - ich habe deine Erklärung nun schon 8 mal gelesen und trotzdem nur einen Teil verstanden. Besonders an deinem "Trick" scheitert es leider.

So wie ich deinen Teil verstanden habe, bekomme ich nur alle Kombinationen mit allen anderen Elementen.

Mein Plan:
array("1","2","3","4") ergibt 1234, 123, 124, 134, 234, 12, 13, 14, 23, 24, 34, 1, 2, 3, 4

Bisheriger Versuch führt leider zu nem Error ;-) Ich werde aber auf jeden Fall ein bisschen weiterbasteln. Dank dir für deine Hilfe!

  
  
function getPowerSet($array) {  
  
    // Falls $array leer ist, gib ein leeres Array zurück. Ist ja  
    // immer gut, wenn Rekursionen nicht endlos laufen.  
       if (!count($array)) return array(); // und Achtung: GIGO  
  
    // Letztes Element separieren:  
       $lastElement = array_pop($array);  
  
    // Potenzmenge des verkürzten Arrays bilden:  
       $subPowerSet = getPowerSet($array);  
  
    /* Und nun den schlauen Trick von oben: zwei Kopien davon  
       nehmen und an jedes Element einer der Kopien $lastElement  
       dranklatschen. Dann die beiden Array zusammenfügen und zurückgeben.  
    */  
        $array1 = $subPowerSet;  
        $array2 = array_map($lastELement, $subPowerSet);  
  
        print_r(array_merge_recursive($array1, $array2));  
  
  
}