2013-03-01 74 views
0

組合我有帶幾句話的陣列,例如String AString BString C(或更多)生成PHP

$array = array('A','B','C'); 

如何獲得一個新的陣列中的所有組合如下:

$result = array(
       'A,B,C', 
       'A,C,B', 
       'B,C,A', 
       'B,A,C', 
       'C,A,B', 
       'C,B,A', 

       'A,B',        
       'A,C', 
       'B,A', 
       'B,C', 
       'C,A', 
       'C,B', 

       'A', 
       'B', 
       'C' 
); 
+0

你問的是排列,而不是組合。 {A,B,C}與{C,B,A}是相同的組合,認爲它們是不同的排列。 – Andrew 2013-10-23 20:37:32

回答

1
<?php 

$array = array('A', 'B', 'C', 'D'); 

function depth_picker($arr, $temp_string, &$collect) { 
    if ($temp_string != "") 
     $collect []= $temp_string; 

    for ($i=0; $i<sizeof($arr);$i++) { 
     $arrcopy = $arr; 
     $elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element 
     if (sizeof($arrcopy) > 0) { 
      depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect); 
     } else { 
      $collect []= $temp_string. " " . $elem[0]; 
     } 
    } 
} 

$collect = array(); 
depth_picker($array, "", $collect); 
print_r($collect); 

?> 

的代碼是從計算器獲得: StackOverflow Link

+2

你確定這可以嗎? http://codepad.viper-7.com/KUeisk – 2013-03-01 19:57:04

+0

這個函數接收 AA,BB , AA, CC, BB,CC 對不起 – user2117559 2013-03-01 20:06:34

+0

你是對的,我編輯的代碼 – MIIB 2013-03-01 20:12:23