2017-01-17 81 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