array(
0 => 'один',
1 => 'два',
3 => 'три',
4 => 'четыре',
5 => 'пять',
6 => 'шесть'
);
array(
0 => array('один', 'два', 'три', 'четыре', 'пять', 'шесть'),
1 => array('один', 'два', 'три', 'четыре', 'пять'),
3 => array('один', 'два', 'три', 'четыре'),
4 => array('один', 'два', 'три'),
5 => array('один', 'два'),
6 => array('один'),
7 => array('один', 'три', 'четыре', 'пять', 'шесть'),
8 => array('два', 'три', 'четыре', 'пять', 'шесть'),
9 => array('четыре', 'пять', 'шесть'),
//и т.д.
);
function gen_wc(array $array)
{
yield $array;
if (count($array) > 1) {
for ($i = count($array) - 1; $i >= 0; --$i) {
$sub = $array;
unset($sub[$i]);
foreach (gen_wc(array_values($sub)) as $a) {
yield $a;
};
};
};
};
$src = ['один', 'два', 'три', 'четыре', 'пять', 'шесть'];
$res = [];
foreach (gen_wc($src) as $a) {
$res[crc32(implode(',', $a))] = $a;
};
print_r(array_values($res));
function gen_wc(array $array)
{
$res = [];
for ($i = 1; $i < pow(2, count($array)); ++$i) {
$pre = [];
for ($j = 0; $j < count($array); ++$j) {
if ($i & pow(2, $j)) {
$pre[] = $array[$j];
};
};
$res[] = $pre;
};
return $res;
};
print_r(gen_wc(['один', 'два', 'три', 'четыре', 'пять', 'шесть']));