KillDead
Хранитель порядка
- Регистрация
- 11 Авг 2006
- Сообщения
- 894
- Реакции
- 579
это как бы один из извращенных вариантов. Если есть что-то оптимальнее, прошу написать
естественно есть. Это из задач по комбинаторике, тебе нужно составить все комбинации чисел без перестановки. Вот реализация на рекурсивных функциях .
PHP:
$a = array(11, 12 , 13, 14);
$b = array(21, 22 , 23, 24);
$c = array(31, 32 , 33, 34);
$d = array(41, 42 , 43, 44);
print_r( combination(array(), array($a, $b, $c, $d) ));
function combination($source, $combinations_arr){
$source_arr = array();
$combinations_first = array_shift($combinations_arr);
$count = sizeof( $combinations_arr);
foreach($combinations_first as $c){
$ns = $source;
$ns[] = $c;
if(!$count ){
$source_arr [] = $ns;
}else{
$source_arr = array_merge($source_arr, combination($ns, $combinations_arr));
}
}
return $source_arr ;
}