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 个表情符号。
所以我真的不擅长数学、公式之类的东西。这有点超出我的理解了。
我基本上有一个数组,或者一个包含大约 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 个表情符号。