Я ищу, чтобы написать функцию, которая создает всю перестановку списка массивов (список динамический). Теперь я нашел 2 статьи, http://dannyherran.com/2011/06/finding-unique-array-combinations-with-php-permutations/ и Finding cartesian product with PHP associative arrays. Но я не хочу хранить их как несколько массивов, я хочу добавить каждый массив к каждой возможности, чтобы впоследствии использовать их.Рекурсивное дерево PHP (перестановки)
На самом деле я хочу умножить каждый массив на другой.
Например:
$array = array(
array(
1,
2
),
array(
'A',
'B',
'C'),
array(
'I',
'II')
);
В этой форме:
Array
(
[0] => Array
(
[0] => 1
[1] => Array
(
[0] => Array
(
[0] => A
[1] => Array
(
[0] => I
[1] => II
)
)
[1] => Array
(
[0] => B
[1] => Array
(
[0] => I
[1] => II
)
)
[2] => Array
(
[0] => C
[1] => Array
(
[0] => I
[1] => II
)
)
)
)
[1] => Array
(
[0] => 2
[1] => Array
(
[0] => Array
(
[0] => A
[1] => Array
(
[0] => I
[1] => II
)
)
[1] => Array
(
[0] => B
[1] => Array
(
[0] => I
[1] => II
)
)
[2] => Array
(
[0] => C
[1] => Array
(
[0] => I
[1] => II
)
)
)
)
)
Я думаю, что это большой пример сделал моя проблема ясна. Для этого типа массива я создал функцию: foreach ($ array [1] as $ value) { $ return1 [] = array ($ value, $ array [2]); }
foreach ($array[0] as $value) {
$return[] = array($value, $return1);
}
print_r($return);
Теперь я хочу, чтобы создать эту функцию внутри рекурсивной функции (так он становится динамичным), но я застрял. Я хотел передать количество массивов функции, а затем повторить.
function createTree($array, $loops=3){
$b = $array[$loops-2];
foreach ($b as $v) {
$return[] = array($v, createTree($return, $loops-1));
}
print_r($return);
}
Возможно, существует другое другое решение для умножения массивов? Но функция, которая не является рекурсивным легко для меня, но делает это рекурсивный ...
Спасибо за вашу помощь
Рекурсивная функция ни я использую: 'Еогеасп ($ массив [1 ] как $ value) { \t \t $ return1 [] = массив ($ value, $ array [2]); \t} \t Еогеасп ($ массив [0] в качестве значения $) { \t \t $ возврата [] = массив ($ значение, $ return1); \t} \t print_r ($ return); ' – user3278918