【发布时间】:2015-05-28 23:38:39
【问题描述】:
我有一个函数,我可以传递一个字符串和所需的长度,以从字符串的字符中获取所有具有固定长度的排列。
但现在我想要整个单词的排列,例如
$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;
}
?>
因此,任何如何修改代码的帮助或提示都会有所帮助。
【问题讨论】:
-
你说的是输入还是输出?
-
嗨,我的意思是输入。我想获得所有单词的组合,而不是字母的组合。
-
那你真的要求太多了,你要求我们重写你的函数,所以这是题外话
-
你认为我需要改变所有的功能?
标签: php arrays string function permutation