PHP:来自 List/Array/Database 的 2、3 和 4 个表情符号的每个独特组合

PHP: Every Unique Combination of 2, 3, & 4 Emoji's from a List/Array/Database

所以我真的不擅长数学、公式之类的东西。这有点超出我的理解了。

我基本上有一个数组,或者一个包含大约 30 个表情符号的数据库。我基本上想在表格中输入一个数字,比方说 3,然后点击提交。 php 脚本将尽可能多地组合 3 个表情符号,然后将它们放回数组中,甚至直接输出到屏幕上,用新行分隔。

我知道如何编写表单代码,我知道如何将内容输出到屏幕并将项目放回数组等等...我有一些很好的编码经验,但我不确定如何着手根据用户输入创建表情符号的独特组合。

感谢任何帮助。如果需要任何说明,请告诉我。

3 的组合数将为 30*29*28 = 24360,对于 4,您将添加 *27,因此总数为 657720,因此这可能不是构建的最佳主意 运行 存储空间不足 space 或导致堆栈溢出,但为了好玩,您可以使用递归脚本来构建它。

$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 个表情符号。