2017-01-14 3 views
-1

Так что мне действительно нехорошо с математикой, формулой и т. П. Это немного выше моей головы.PHP: каждая уникальная комбинация из 2, 3 и 4 Emoji из списка/массива/базы данных

У меня в основном есть массив или база данных, в которой содержится около 30 emoji. Я хочу в основном ввести число в форму, скажем 3, а затем нажать submit. скрипт php затем сделает как можно больше уникальных комбинаций из 3 emoji, а затем поместит их обратно в массив или даже просто выйдет прямо на экран, разделенный новой строкой.

Я знаю, как закодировать форму, я знаю, что выводит вещи на экран и помещает элементы обратно в массив и т. Д. И т. Д. ... У меня есть хорошее кодирование опыта, но я не уверен, как идти о создании уникальных комбинаций emoji на основе пользовательского ввода.

любая помощь с благодарностью. если требуется какое-либо разъяснение, дайте мне знать.

ответ

0

Количество комбинаций для 3 будет 30 * 29 * 28 = 24360 для 4, вы добавили бы * 27, чтобы общее количество было 657720, поэтому это, вероятно, не самая лучшая идея для создания, так как у вас может закончиться память или вызвать переполнение стека, но для удовольствия вы можете использовать рекурсивный скрипт для его создания.

$emojis = range(1, 30); 
$combos = makeCombos($emojis, 3); 
echo json_encode($combos); 

function makeCombos($emojis, $depth, $now = []) { 
    $results = []; 
    $depth--; 
    foreach ($emojis as $key => $value) { 
     $current = $now; 
     $current[] = $value; 
     $emojisNew = $emojis; 
     unset($emojisNew[$key]); 
     if ($depth > 0) { 
      $results = array_merge(
        $results, 
        makeCombos($emojisNew, $depth, $current) 
       ); 
     } else { 
      $results[] = $current; 
     } 
    } 
    return $results; 
} 

Использование различных (1, 3) таким образом, есть только 3 * 2 * 1 = 6 результаты дает следующий результат:

[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 

Примечание: Используйте $combos = makeCombos($emojis, 4); для комбо из 4 смайликов.

Смежные вопросы