Php 如何从字符串中获取具有所需长度的所有排列?
我有一个函数,在这个函数中,我可以传递一个字符串和一个所需的长度,以从字符串的字符中获得所有具有固定长度的排列 但是现在我想要整个单词的排列,例如Php 如何从字符串中获取具有所需长度的所有排列?,php,arrays,string,function,permutation,Php,Arrays,String,Function,Permutation,我有一个函数,在这个函数中,我可以传递一个字符串和一个所需的长度,以从字符串的字符中获得所有具有固定长度的排列 但是现在我想要整个单词的排列,例如 $source = "apple,potatoes,orange"; 遗憾的是,此函数只提供字符排列,而不是整个单词,我不知道如何修改代码,因此我将从上述示例数据中获得这些排列: apple,apple apple,potatoes apple,orange potatoes,apple potatoes,potatoes potatoes,ora
$source = "apple,potatoes,orange";
遗憾的是,此函数只提供字符排列,而不是整个单词,我不知道如何修改代码,因此我将从上述示例数据中获得这些排列:
apple,apple
apple,potatoes
apple,orange
potatoes,apple
potatoes,potatoes
potatoes,orange
//...
代码:
<?php
$source = 'AaBbCcDdEe';
foreach(combos_with_repetition($source, 2) as $combo) {
echo "$combo<br>\n";
}
function combos_with_repetition($input, $combo_len = 2)
{
for($i = 0; $i < $combo_len; ++$i)
{
@$part1 .= 'for($k'.$i.' = 0, $len = strlen($input); $k'.$i.' < $len; ++$k'.$i.') ';
@$part2 .= ($i?'.':'') . '$input[$k'.$i.']';
}
eval($part1.'$rtn[] = '.$part2.';');
return $rtn;
}
?>
因此,任何有关如何修改代码的帮助或提示都会有所帮助。这将为您完成以下工作:
function test($source){
$source_array = explode(',',$source);
$result = '';
foreach($source_array as $item)
{
foreach($source_array as $item2){
$result .= $item.','.$item2.'<br>';
}
}
return $result;
}
$source="apple,patatoes,orange";
echo test($source);
功能测试($source){
$source_数组=分解(',',$source);
$result='';
foreach($source\u数组作为$item)
{
foreach($source_数组作为$item2){
$result.=$item.,'.$item2.
';
}
}
返回$result;
}
$source=“苹果、帕塔托斯、橙色”;
回声测试(来源);
这将为您完成以下任务:
function test($source){
$source_array = explode(',',$source);
$result = '';
foreach($source_array as $item)
{
foreach($source_array as $item2){
$result .= $item.','.$item2.'<br>';
}
}
return $result;
}
$source="apple,patatoes,orange";
echo test($source);
功能测试($source){
$source_数组=分解(',',$source);
$result='';
foreach($source\u数组作为$item)
{
foreach($source_数组作为$item2){
$result.=$item.,'.$item2.
';
}
}
返回$result;
}
$source=“苹果、帕塔托斯、橙色”;
回声测试(来源);
这应该适合您,即使没有邪恶()
那么这段代码是做什么的呢
1.有多少种排列?
非常简单:
nl=置换量
其中,n
是字数,l
是每个组合所需的长度
因此,对于这个特定的示例,有3个单词(apple
、patatoes
和orange
),我们希望每个排列的长度为3。指:
33=27个排列
2.将所有排列组合在一起
我们循环遍历我们已经拥有的所有置换(从一个置换开始,一个“空置换”($permutations=[[]];
)开始),对于每个置换,我们遍历我们的数据数组,并将每个置换与每个输入数据组合成一个新的置换
现在我们这样做,直到得到每个排列所需的长度
2.1示例
Input data:
[1, 2] //Input array with the data
length = 2 //Desired length for each permutation
正如你在上面的例子中所看到的,我们现在有了我们想要的所有长度的排列,这里是2
但是,为了只获得具有所需长度的排列,我们在每次迭代中都覆盖结果数组,因此在最后,结果数组中只有具有所需长度的排列
3.代码:
这应该适合您,即使没有
evil()
那么这段代码是做什么的呢
1.有多少种排列?
非常简单:
nl=置换量
其中,n
是字数,l
是每个组合所需的长度
因此,对于这个特定的示例,有3个单词(apple
、patatoes
和orange
),我们希望每个排列的长度为3。指:
33=27个排列
2.将所有排列组合在一起
我们循环遍历我们已经拥有的所有置换(从一个置换开始,一个“空置换”($permutations=[[]];
)开始),对于每个置换,我们遍历我们的数据数组,并将每个置换与每个输入数据组合成一个新的置换
现在我们这样做,直到得到每个排列所需的长度
2.1示例
Input data:
[1, 2] //Input array with the data
length = 2 //Desired length for each permutation
正如你在上面的例子中所看到的,我们现在有了我们想要的所有长度的排列,这里是2
但是,为了只获得具有所需长度的排列,我们在每次迭代中都覆盖结果数组,因此在最后,结果数组中只有具有所需长度的排列
3.代码:
输入是指输入还是输出?嗨,我是指输入。我想获得所有单词的组合,而不是字母的组合。那么你真的要求太多了,你要求我们重写你的函数,所以这是离题的。你认为我需要更改所有函数吗?put,你是指输入还是输出?嗨,我是指输入。我想获得所有单词的组合,而不是字母的组合。那么你真的要求太多了,你要求我们重写你的函数,所以这是离题的。你认为我需要更改所有函数吗?谢谢你的帮助Opetmar!我很高兴它帮了你的忙。。不客气:)@FredericMuller这不是一个非常灵活的答案。FredericMuller这取决于你,但我认为你必须接受@Rizier123答案。它比我的答案更好、更详细、更灵活。谢谢你的帮助Opetmar!我很高兴它帮了你的忙。。不客气:)@FredericMuller这不是一个非常灵活的答案。FredericMuller这取决于你,但我认为你必须接受@Rizier123答案。它比我的答案更好、更详细、更灵活。谢谢你回答Rizier123!谢谢你的回答!
Array
(
[0] => Array
(
[0] => apple
[1] => apple
[2] => apple
)
//...
[26] => Array
(
[0] => orange
[1] => orange
[2] => orange
)
)