Php 如何使用任意数量的单词获得单词列表的所有组合
我已搜索,但找不到与我的查询匹配的任何内容。我见过很多解决方案,其中人们需要使用所有选项的所有数字/单词组合,但没有一个像这样 下面是一个例子:Php 如何使用任意数量的单词获得单词列表的所有组合,php,math,permutation,combinations,Php,Math,Permutation,Combinations,我已搜索,但找不到与我的查询匹配的任何内容。我见过很多解决方案,其中人们需要使用所有选项的所有数字/单词组合,但没有一个像这样 下面是一个例子: apple pear 这将产生: 苹果 梨 苹果梨 梨苹果 甚至 apple pear banana 苹果 梨 香蕉 苹果梨 苹果香蕉 梨香蕉 … … 香蕉梨苹果 关键是,所有可能的组合,以任何顺序使用任何单词0或1次。:) 底部的最终答案 伪代码(尚未测试) 运行代码: 这将返回所有可能的组合 或者这个看起来更好: 或者,如果要查
apple pear
这将产生:
苹果梨
苹果梨
梨苹果 甚至
apple pear banana
苹果梨
香蕉
苹果梨
苹果香蕉
梨香蕉
…
…
香蕉梨苹果
关键是,所有可能的组合,以任何顺序使用任何单词0或1次。:) 底部的最终答案
伪代码(尚未测试)
运行代码:
这将返回所有可能的组合
或者这个看起来更好:
或者,如果要查看平面关键点:
最后答覆: 这张单子列出了它们:
底部的最终答案
伪代码(尚未测试)
运行代码:
这将返回所有可能的组合
或者这个看起来更好:
或者,如果要查看平面关键点:
最后答覆: 这张单子列出了它们:
您可以下载这个类: 然后像这样使用它:
$combinatorics = new Math_Combinatorics;
$words_arr = array(
'one' => 'a',
'two' => 'b',
'three' => 'c',
'four' => 'd',
);
for ($i=count($words_arr)-1;$i>=1;$i--) {
echo '<br><br>' . $i . ':<br>';
$combinations_arr = $combinatorics->combinations($words_arr, $i);
foreach ($combinations_arr as $combinations_arr_item) {
echo implode(', ', $combinations_arr_item) . '<br>';
}
}
$combinationics=新数学\u组合数学;
$words\u arr=数组(
“一”=>“一”,
“两个”=>“b”,
“三”=>“c”,
“四”=>“d”,
);
对于($i=count($words\u arr)-1;$i>=1;$i--){
回显“
”.$i.:
”;
$combinations\u arr=$combinationics->combinations($words\u arr,$i);
foreach($combines\u arr as$combines\u arr\u item){
回波内爆(“,”,$combines_arr_item)。“
”;
}
}
您可以下载这个类:
然后像这样使用它:
$combinatorics = new Math_Combinatorics;
$words_arr = array(
'one' => 'a',
'two' => 'b',
'three' => 'c',
'four' => 'd',
);
for ($i=count($words_arr)-1;$i>=1;$i--) {
echo '<br><br>' . $i . ':<br>';
$combinations_arr = $combinatorics->combinations($words_arr, $i);
foreach ($combinations_arr as $combinations_arr_item) {
echo implode(', ', $combinations_arr_item) . '<br>';
}
}
$combinationics=新数学\u组合数学;
$words\u arr=数组(
“一”=>“一”,
“两个”=>“b”,
“三”=>“c”,
“四”=>“d”,
);
对于($i=count($words\u arr)-1;$i>=1;$i--){
回显“
”.$i.:
”;
$combinations\u arr=$combinationics->combinations($words\u arr,$i);
foreach($combines\u arr as$combines\u arr\u item){
回波内爆(“,”,$combines_arr_item)。“
”;
}
}
到目前为止,您有哪些代码?您想要的可能重复的代码在统计学上称为排列(与组合等相反)@user957593——我用一些工作代码更新了我的答案^^ ^在这种情况下,苹果是否有效?到目前为止,你有什么代码?你想要的可能重复的东西在统计学上称为排列(相对于组合等)@user957593--我用一些工作代码更新了我的答案^ ^在这种情况下是否有效?@Justin在答案底部看到了代码的更新。@Justin在答案底部看到了代码的更新。
<?php
$str = "apple pear banana orange";
$str_splode = explode(' ',$str);
print_r(showCombo(array(), $str_splode));
function showCombo($str_arr, $arr){
$ret = array();
foreach($arr as $val){
if(!in_array($val, $str_arr)){
$temp = $str_arr;
$temp[] = $val;
$ret[$val] = $temp;
$ret[$val][] = showCombo($temp, $arr);
}
}
return $ret;
}
?>
<?php
$str = "apple pear banana orange";
$str_splode = explode(' ',$str);
$combos = showCombo(array(), $str_splode);
foreach($combos as $key=>$array){
echo $key.PHP_EOL;
displayArrayByKey($key, $array);
}
function displayArrayByKey($str, $arr){
foreach($arr as $key=>$array){
$string = $str. " " . $key;
echo $string . PHP_EOL;
if(count($array)> 0){
displayArrayByKey($string, $array);
}
}
}
function showCombo($str_arr, $arr){
$ret = array();
foreach($arr as $val){
if(!in_array($val, $str_arr)){
$temp = $str_arr;
$temp[] = $val;
$ret[$val] = showCombo($temp, $arr);
}
}
return $ret;
}
?>
$combinatorics = new Math_Combinatorics;
$words_arr = array(
'one' => 'a',
'two' => 'b',
'three' => 'c',
'four' => 'd',
);
for ($i=count($words_arr)-1;$i>=1;$i--) {
echo '<br><br>' . $i . ':<br>';
$combinations_arr = $combinatorics->combinations($words_arr, $i);
foreach ($combinations_arr as $combinations_arr_item) {
echo implode(', ', $combinations_arr_item) . '<br>';
}
}