2013-05-27 2 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` 

Ho я могу сделать это в PHP?

+0

Использование Linq cross join [1] feature Это сделает то, что вы пожелаете. [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

Спасибо! Можно ли преобразовать эту функцию, чтобы сделать это для любого количества массивов N-s? Пожалуйста, помогите мне построить эту повторяющуюся функцию ... –

Смежные вопросы