$arr_1 = array('zeng','he','b’);
$arr_2 = array('ceng','huo','b');
$arr_3 = array('ceng','hu','b');
希望结果:
组合后的数组元素顺序不变:
$array = array('zengheb','zenghuob','zenghub','cengheb','cenghuob','cenghub');
N多个$arr,组成一个array
用C#写了一个,作为思路,你参考下,用递归。
using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Foo(IEnumerable<string> seed, string[] a, string[] b, int x, int y)
{
if (a.Count() > x)
{
Foo(seed.Concat(new string[] { a[x] }), a, b, x + 1, y);
}
if (b.Count() > y)
{
Foo(seed.Concat(new string[] { b[y] }), a, b, x, y + 1);
}
if (a.Count() == x && b.Count() == y) Console.WriteLine(string.Join(",", seed));
}
public static void Main()
{
string[] a = { "a", "b", "c" };
string[] b = { "d", "e", "f" };
Foo(new string[] { }, a, b, 0, 0);
}
}
a,b,c,d,e,f
a,b,d,c,e,f
a,b,d,e,c,f
a,b,d,e,f,c
a,d,b,c,e,f
a,d,b,e,c,f
a,d,b,e,f,c
a,d,e,b,c,f
a,d,e,b,f,c
a,d,e,f,b,c
d,a,b,c,e,f
d,a,b,e,c,f
d,a,b,e,f,c
d,a,e,b,c,f
d,a,e,b,f,c
d,a,e,f,b,c
d,e,a,b,c,f
d,e,a,b,f,c
d,e,a,f,b,c
d,e,f,a,b,c
using System;
using System.Linq;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
string[] a = { "zeng", "he", "b" };
string[] b = { "ceng", "huo", "b" };
string[] c = { "ceng", "hu", "b" };
string[][] d = { a, b, c };
List<string> r = new List<string>() { "" };
List<string> r1 = new List<string>() { };
for (int i = 0; i < d.Count(); i++)
{
foreach (string s in r)
{
foreach (string[] s1 in d)
{
r1.Add(s + s1[i]);
}
}
r = r1.ToList();
r1.Clear();
}
foreach (string s in r.Distinct())
{
Console.WriteLine(s);
}
}
}
zengheb
zenghuob
zenghub
cengheb
cenghuob
cenghub