Есть массив вида:
[
[0] => [1, 2, 3],
[1] => [1, 2],
[2] => [1, 2, 3, 4]
];
Мне нужно собрать все возможные комбинации чисел, то есть, чтобы получилось:
[1, 1, 1],
[1, 1, 2],
[1, 1, 3],
[1, 1, 4],
[1, 2, 1]... и тд
Как это сделать? Может есть пример где посмотреть?
Сейчас не у компьютера, возможны ошибки. Но навскидку можно например так:
$arr = [
[1, 2, 3],
[1, 2],
[1, 2, 3, 4]
];
$ab = [];
foreach($arr as $row){
$ab = array_values(array_unique(array_merge($ab, $row)));
}
$result=[];
$k = 1;
$k1 = 1;
for ($i = 0; $i < count($ab) * count($ab); $i++) {
for ($j = 0; $j < count($ab); $j++) {
$result[$i][] = [$k, $k1, $ab[$j]];
}
if($k1 == count($ab)){
$k++;
$k1=1;
}else{
$k1++;
}
}
echo '<pre>';
print_r ($result);
echo '</pre>';
Вот тут еще есть решение.
function get_combinations($arrays) {
$result = array(array());
foreach ($arrays as $property => $property_values) {
$tmp = array();
foreach ($result as $result_item) {
foreach ($property_values as $property_value) {
$tmp[] = array_merge($result_item, array($property => $property_value));
}
}
$result = $tmp;
}
return $result;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не как не могу разобраться с именем отправителяУ меня nginx, debian, ssmtp, php