我正在尝试循环一些可以组合和混合2个字符串的东西。
因此,我希望给定字符串的字符之间的所有可能组合都采用“第一个字符串的每个字符+第二个字符串的每个字符”的方案。示例:
test & name
tame, teme, tese, tesme, teste, tname, tename, tesame, testme, tesname, testame
name & test
namt, nast, nest, namet, namst, ntest, namest, natest, namtest
我正在尝试如下操作:
$str1 = "test";
$str2 = "name";
echo substr($str1,0,1).substr($str2,-3).','.substr($str1,0,2).substr($str2,-2).','.substr($str1,0,1).substr($str2,-4).','.substr($str1,0,3).substr($str2,-2)
.','.substr($str1,0,4).substr($str2,-1).','.substr($str1,0,2).substr($str2,-3).','.substr($str1,0,1).substr($str2,-5).','.substr($str1,0,2).substr($str2,-4)
.','.substr($str1,0,4).substr($str2,-2);
但这是局部的,需要很多匹配所有组合。也是丑陋的。而且,如果输入字符串更大或更小,组合的数量也将有所不同。
您有什么建议吗?
答案 0 :(得分:0)
您可以尝试这样
Class.cs
答案 1 :(得分:0)
$str1 = "test";
$str2 = "name";
$len1 = strlen($str1);
$len2 = strlen($str2);
$arr3 =array();
for ($i = 0; $i <=$len1; $i++) {
$arr3[] = substr($str1,0,$i+1).substr($str2,($i-$len1));
}
for ($i = 0; $i <=$len2; $i++) {
$arr3[] = substr($str2,0,$i+1).substr($str1,($i-$len2));
}
$arr3 = array_unique($arr3);
echo implode(',', $arr3);
我想到了这个