Besonders an deinem "Trick" scheitert es leider.
Ist gar nicht meiner - den hab ich abgeguckt :-)
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
Also: Wenn man (erstmal) zu den obigen Teilmengen der Menge {1,2,3,4} noch die leere Menge dazutut, dann hat man 16 Stück. Klar - zu jedem Element kann man entweder 'ja, kommt rein', oder 'nein, bleibt draußen' sagen, das macht 2^4 Mögliche Teilmengen. Nun enthalten genau acht davon die 1, und 8 enthalten sie nicht.
Wenn ich mir die 8 angucke, die die 1 nicht enthalten, dann ist das gerade die Potenzmenge der Menge {2,3,4}. Klar - die Menge aller Teilmengen von {1,2,3,4}, die die 1 nicht enthalten, ist gerade die Menge aller Teilmengen von {2,3,4}.
Und die anderen acht sind gerade - genau - wieder dieselben acht wie vorher, mit noch ner 1 dazu. Das ist die Idee der Rekursion.
$array1 = $subPowerSet;
$array2 = array_map($lastELement, $subPowerSet);
Schau Dir bitte nochmal array_map im Handbuch an. Ganz so einfach kriegste die Rosinen hier nicht :-)
print_r(array_merge_recursive($array1, $array2));
Warum 'recursive'?
Viele Grüße,
der Bademeister