Моя перестановка / комбинации данных
$combinations = [[]];
$data = [
['alteration1', 'alteration2', 'alteration3', 'alteration4' ... upto 5 each],
['alteration1', 'alteration5', 'alteration6', 'alteration7' ... upto 5 each],
['alteration8', 'alteration9', 'alteration10', 'alteration5' ... upto 5 each],
... upto 6 max
];
$length = count($data);
for ($count = 0; $count < $length; $count++) {
$tmp = [];
foreach ($combinations as $v1) {
foreach ($data[$count] as $v2)
$tmp[] = array_merge($v1, [$v2]);
}
$combinations = $tmp;
}
print_r($combinations);
Сценарий будет генерировать такие наборы
0 => array:3 [▼
0 => "alteration1"
1 => "alteration1"
2 => "alteration8"
]
1 => array:3 [▼
0 => "alteration1"
1 => "alteration1"
2 => "alteration9"
]
... проблема начинается, когда я начинаю получать те же последовательности данных в моеминдексы массива case 0 и 20 будут одинаковыми, несмотря на любую позицию.
20 => array:3 [▼
0 => "alteration8"
1 => "alteration1"
2 => "alteration1"
]
21 => array:3 [▼
0 => "alteration1"
1 => "alteration9"
2 => "alteration1"
]
$final = []; // remove duplicates
Основная идея состоит в том, чтобы сохранить уникальность массива $ комбинаций (alteration1, alteration2, alteration3) равной (alteration3, alstruction1, alstruction2)) поэтому он должен быть пропущен в массиве $ final. Я действительно не нашел ничего вокруг SO и Google. Спасибо за помощь. $ размерности данных [от 1 до 6], каждый массив внутри может быть [1 - 6]. Следующий скрипт может работать не так, как ожидалось.
http://sandbox.onlinephpfunctions.com/code/3ad5084386c2185f7619aaac152b638873039ee8