PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
Alho
Отправлено: 19 Мая, 2012 - 00:05:46
Посетитель
Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012
Помог: 11 раз(а)
Через циклы легко:
PHP:
скопировать код в буфер обмена
function getallcomb( $array1 , $array2 , $array3 )
{
foreach ( $array1 as $key1 => $val1 ) {
foreach ( $array2 as $key2 => $val2 ) {
foreach ( $array3 as $key4 => $val3 ) {
$out [ ] = array ( $val1 , $val2 , $val3 ) ; }
}
}
return $out ;
}
$array1 = array ( key => 1
, key2
=> 2
, key3
=> 3
) ; print_r ( getallcomb
( $array1 , $array2 , $array3 ) ) ; ?>
Черд. Помогите сделать. Никак не могу придумать через рекурсию (Отредактировано автором: 19 Мая, 2012 - 00:29:14)
Bio man
Отправлено: 19 Мая, 2012 - 00:08:52
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010
Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
Alho пишет: Никак не могу придумать через рекурсию
Такая же фигня. Кстати в твоем примере $i не нужен.
PHP:
скопировать код в буфер обмена
function variations
( array $rgElements ) { foreach ( $rgElements [ 0] as $item1 ) {
foreach ( $rgElements [ 1] as $item2 ) {
foreach ( $rgElements [ 2] as $item3 ) {
$rgResult [ ] = array ( $item1 , $item2 , $item3 ) ; }
}
}
return $rgResult ; // array(i=>array,...)
}
$array1 = array ( 'key' => 1 , 'key2' => 2
) ; $array2 = array ( 'key' => 4
) ; $array3 = array ( 'key' => 5 , 'key2' => 6 , 'key3' => 3
) ;
$a = variations
( array ( $array1 , $array2 , $array3 ) ) ; (Отредактировано автором: 19 Мая, 2012 - 00:10:21)
LIME
Отправлено: 19 Мая, 2012 - 00:13:24
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Bio man а рекурсия где?))
(Добавление)
Alho пишет: Никак не могу придумать через рекурсию
а ты представь что теперь появился еще 1 массив
а потом еще
вот и вызывай рекурсию уменьшая число массивов в аргументе
Bio man
Отправлено: 19 Мая, 2012 - 00:27:43
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010
Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
LIME пишет: Bio man а рекурсия где?))
Я же и говорю, что никак не могу осилить.
LIME , может напишешь рекурсию? А то я пол ночи просижу.
(Добавление)
Как же это сложно! Сдаюсь!
LIME
Отправлено: 19 Мая, 2012 - 01:02:42
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
не проверял
лениво))
PHP:
скопировать код в буфер обмена
<?
function variations
( array $rgElements ) { if ( count ( $rgElements ) > 1
) { $rgElements2 = $rgElements ;
array_shif( $rgElements2 ) ;
foreach ( $rgElements [ 0] as $item1 ) {
$rgResult [ ] = array_merge ( $item1 , variations
( $rgElements2 ) ) ; }
} else {
return $rgElements [ 0] ;
}
return $rgResult ;
}
(Добавление)
нет
кажись лажа
Bio man
Отправлено: 19 Мая, 2012 - 01:14:09
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010
Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
LIME пишет: нет
кажись лажа
Согласись, задачка не из простых. Может кто из профи рассеет туман
Stierus
Отправлено: 17 Августа, 2012 - 10:54:57
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008
Откуда: Москваль
Помог: 52 раз(а)
Цитата: Как мне получить все возможные варианты значений между ними.
Должно получиться:
1-4-5
1-4-6
2-4-5
2-4-6
3-4-5
3-4-6
Вы определитесь, хотите вы все возможные комбинации или отсортированные?
1-4-5 не то же самое, что 4-1-5
Поиск в теме | Версия для печати
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB