我有数字,从0到8.我想在结果中,所有可能的那些数字组,每组应该使用所有数字,每个数字只能在一组中出现一次.
我想在PHP中看到可以打印出结果的解决方案.或者,至少,我想在组合学理论上有一些更新,因为我早就忘记了它.计算有多少排列的公式是什么?
示例集:
我整天都在看PHP数组排列/组合问题..但仍然无法弄明白:/
如果我有一个像这样的数组:
20 //key being 0
20 //key being 1
22 //key being 2
24 //key being 3
Run Code Online (Sandbox Code Playgroud)
我需要组合如:
20, 20, 22 //keys being 0 1 2
20, 20, 24 //keys being 0 1 3
20, 22, 24 //keys being 0 2 3
20, 22, 24 //keys being 1 2 3
Run Code Online (Sandbox Code Playgroud)
我目前的代码给了我:
20, 22, 24
Run Code Online (Sandbox Code Playgroud)
因为它不想重复20 ...但这就是我需要的!
这是我的代码.它直接来自Php递归以获得字符串的所有可能性
function getCombinations($base,$n){
$baselen = count($base);
if($baselen == 0){
return;
}
if($n == 1){
$return = array();
foreach($base as $b){
$return[] = …Run Code Online (Sandbox Code Playgroud) 我对PHP有一个基本的了解,但我觉得我想做的事情可以用更简单的方式完成.我正在使用PHP来显示Wordpress主题的HTML内容.我希望用户能够确定HTML"块"的显示顺序.目前我正在使用if/elseif设置.这是一个过于简化的例子:
if ( $layout == 'layout_one' ) {
echo '<div class="header">Header</div>';
echo '<div class="content">Content</div>';
echo '<div class="footer">Footer</div>';
} elseif ( $layout == 'layout_two' ) {
echo '<div class="content">Content</div>';
echo '<div class="header">Header</div>';
echo '<div class="footer">Footer</div>';
} elseif ( $layout == 'layout_three' ) {
echo '<div class="footer">footer</div>';
echo '<div class="header">Header</div>';
echo '<div class="content">Content</div>';
}
Run Code Online (Sandbox Code Playgroud)
现在,由于布局选项(排列)的剪切数,这种技术变成了绝对的熊.所以在我看来你会为每个HTML内容块编写一个单独的函数,然后以某种方式有另一个函数按照用户指定的顺序显示它们.或者可能将所有块放入一个数组中,然后根据布局选择重新排序数组...
无论如何,我已经碰到了如何实际做到这一点.任何指导将不胜感激.谢谢
我知道有几个问题涉及这个主题(例如这里),但没有一个(至少从我发现的)做我需要的.
假设我有一个包含3个元素的数组[1, 2, 3].我需要找到所有可能的唯一组合(因此排除排列,如此处),包括重复元素.所以结果应该是:
[1]
[2]
[3]
[1, 1]
[1, 2]
[1, 3]
[2, 2]
[2, 3]
[3, 3]
[1, 1, 1]
[1, 1, 2]
[1, 1, 3]
[1, 2, 2]
[1, 2, 3]
[1, 3, 3]
[2, 2, 2]
[2, 2, 3]
[2, 3, 3]
[3, 3, 3]
Run Code Online (Sandbox Code Playgroud)
排除像[3, 2, 1]或的子集[2, 1, 3],它们是相同的[1, 2, 3].
我怎样才能做到这一点?