2017-01-17 49 views
-5

陣列是這樣的:$arr = array("a","b","c","d");如何結合陣列

我想合併它。結果必須有"abcd"而不是重複。例如:$ r =數組(「ab」,「cd」)||數組(「a」,「bcd」)||數組(「abcd」)||陣列( 「AB」, 「C」, 「d」)

現在我用下面的函數:

function combination(){ 
$str = array("a","b","c","d"); 
$result = array(); 
$c = count($str); 
$nbin = 1 << $c; 
for($i = 1; $i < $nbin; $i++){ 
     $element = ""; 
     for($j=0;$j < $c; $j++){ 
       if((1 << $j & $i) !=0){ 
         $element .= $str[$j]; 
       } 
     } 
     array_push($result,$element); 
} 
     return $result; 
} 

這是$結果:

Array 
(
    [0] => a 
    [1] => b 
    [2] => ab 
    [3] => c 
    [4] => ac 
    [5] => bc 
    [6] => abc 
    [7] => d 
    [8] => ad 
    [9] => bd 
    [10] => abd 
    [11] => cd 
    [12] => acd 
    [13] => bcd 
    [14] => abcd 
) 

我應該怎麼做?

+3

這與java或javascript有什麼關係? – shmosel

+0

由js或java或php – xuzeng

回答

0

我有點不確定你到底是什麼期望被你的代碼返回。假設你想要返回的只是數組中的元素14(僅限abcd),那麼可以使用PHP函數implode。這將數組中的所有元素連接在一起。即,

$array = array('a', 'b', 'c', 'd'); 
var_dump(implode($array)); 
var_dump(implode('-', $array)); 

將返回 字符串 'ABCD' 然後 字符串 'A-B-C-d'

我希望這回答你問什麼。

+0

實現此算法謝謝,但我想獲得一些數組。每個數組都包含$ result的某個元素。像數組(「a」,「bcd」)或數組(「bc」,「ad」)的數組。重複字符\t是沒有必要的。例如:array(「a」,「abc」) – xuzeng

+0

因此,您希望獲得適合2個數組元素的所有不同的字符組合? –

+0

是的。這是我期望的。 – xuzeng