2017-01-17 4 views
-5

配列は次のようになります:$arr = array("a","b","c","d");配列を組み合わせる方法

私はそれを組み合わせたいと思います。結果は"abcd"であり、繰り返されません。

例:$ r = array( "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

関連する問題