PHP вычисляет каждую перестановку из 2D-массива

Я искал и чесал голову в течение нескольких дней, и я застрял между камнем и наковальней. После выполнения всего моего предыдущего кода я остаюсь с этим массивом:

Array (
[0] =>  Array
(
[0] => 1
[1] => 3
)
[1] => Array
(
[0] => 6
[1] => 7
[2] => 8
)
[2] => Array
(
[0] => 9
[1] => 10
)
)

Что мне нужно сделать, это рассчитать каждую возможную перестановку всех ключей.

Требуемый вывод должен легко вставляться в виде отдельных записей или, предпочтительно, массовой вставки в базу данных SQL.

После охоты вокруг я попробовал бесчисленное множество примеров. Самым близким, что я получил, было использование функции Implode, однако это все равно не сработало.

Любая помощь очень ценится!

—Редактировать—

Вот пример того, как должен выглядеть возвращаемый массив:

Array
(
[0] => 1,6,9
[1] => 1,6,10
[2] => 3,6,9
[3] => 3,6,10
[4] => 1,7,9
[5] => 1,7,10
[6] => 3,7,9,
[7] => 3,7,10
)

Это не каждая перестановка, но она должна дать вам представление о том, чего мне нужно достичь.

3

Решение

То, что вы пытаетесь сделать, определяется в этой формуле: формула перестановки

И это может быть сделано так, это называется декартово произведение:

function cartesian() {
$_ = func_get_args();
if(count($_) == 0)
return array(array());
$a = array_shift($_);
$c = call_user_func_array(__FUNCTION__, $_);
$r = array();
foreach($a as $v)
foreach($c as $p)
$r[] = array_merge(array($v), $p);
return $r;
}

$count = cartesian(
Array(1,3),
Array(6,7,8),
Array(9,10)
);

print_r($count);
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]