2013-05-27 42 views
0

比方说,我有几个数组:如何乘以阵列(如SQL一样)

$array1 = array('a','b','c'); 
$array2 = array('1','2','3'); 
$array3 = array('+','-'); 

因此,我想有这些阵列的所有可能的混合物的一个数组:

$result = array('a1+','a1-','a2+','a2-','b1+','b1-','b2+'... 

SQL在以下要求的情况下提供了这样的操作:

SELECT * FROM `letters`,`digits`,`operations` 

何可我在PHP这样做呢?

+0

使用Linq cross join [1]功能它会做你想做的事。 [1]:http://stackoverflow.com/questions/56547/how-do-you-perform-a-cross-join-with-linq-to-sql –

+1

这就是所谓的 '笛卡尔乘积' ,这里有一个有用的答案:http://stackoverflow.com/a/6313346/1064767 – Sammitch

+0

“a3 +”和“a3-'会发生什么? –

回答

0
$permute= array(); 
foreach($array1 as $x) 
    foreach($array2 as $y) 
     foreach ($array3 as $z) 
      $permute[]= $x.$y.$z; 
+0

谢谢!是否有可能将此函数转换为任何数量的arrayN-s?请帮助我构建这个反复出现的功能... –