3v4l.org

run code in 300+ PHP versions simultaneously
<?php function P(array $sources) { $result=array(); $cache=array(); foreach($sources as $node) { $cache=$result; $result=array(); foreach($node as $item) { if(empty($cache)) { $result[]=array($item); } else { foreach($cache as $line) { $line[]=$item; $result[]=$line; } } } } return $result; } $result=P(array( 'a', 'b', 'c')); print_r(array_map(function($a){return implode(",",$a);},$result));

preferences:
48.61 ms | 402 KiB | 5 Q