2011-03-06 88 views
0

我有一個前綴數組,基數詞數組和後綴數組。我希望看到可以製作的每個組合。排列/生成組合前綴和後綴

例子:

prefixes: 1 2 
    words: hello test 
    suffixes: _x _y 

    Results: 

1hello_x 
1hello_y 
1hello 
1test_x 
1test_y 
1test  
1_x  
1_y  
1   
2hello_x 
2hello_y 
2hello 
2test_x 
2test_y 
2test 
2_x  
2_y  
2  
hello_x 
hello_y 
hello 
test_x 
test_y 
test  
_x  
_y  
y 

我怎樣才能做到這一點?

編輯:感謝所有的答覆,我正在通過解決方案,但似乎如果沒有前綴,那麼它將失敗的組合。它應該仍然通過基本詞彙和後綴,即使沒有任何前綴。

回答

0
function combineAll ($prefixes, $words, $suffixes) 
{ 
    $combinations = array(); 
    foreach ($prefixes as $prefix) 
    { 
    foreach ($words as $word) 
    { 
     foreach ($suffixes as $suffix) 
     { 
     $combinations[] = $prefix.$word.$suffix; 
     } 
    } 
    } 
    return $combinations; 
} 
+0

請參閱編輯。 – ParoX 2011-03-06 21:46:49

+0

如果我只是添加'array_push($ prefixes,「」);'''array_push($ words,「」);''array_push($ prefixes,「」);'然後它會做我需要的。另外請注意,你有$後綴的參數,而不是後綴 – ParoX 2011-03-06 21:55:18

+0

嘆息,請張貼'充分'的問題,而不是多次改變它。 – 2011-03-06 22:00:36

0

這應該讓你開始:

http://ask.amoeba.co.in/php-combinations-of-array-elements/

//$a = array("1", "2"); 
$b = array("hello", "test"); 
$c = array("_x", "_y"); 

if(is_array($a)){ 
$aG = array($a,$b, $c); 
}else{ 
$aG = array($b, $c); 
    } 
$codes = array(); 
$pos = 0; 
generateCodes($aG); 

function generateCodes($arr) { 
    global $codes, $pos; 
    if(count($arr)) { 
     for($i=0; $i<count($arr[0]); $i++) { 
      $tmp = $arr; 
      $codes[$pos] = $arr[0][$i]; 
      $tarr = array_shift($tmp); 
      $pos++; 
      generateCodes($tmp); 

     } 
    } else { 
     echo join("", $codes)."<br/>"; 
    } 
    $pos--; 
} 

結果:
1hello_x
1hello_y
1test_x
1test_y
2hello_x
2hello_y
2test_x
2test_y

+0

請參閱編輯。 – ParoX 2011-03-06 21:47:14

+0

編輯允許可選$ a – 2011-03-06 21:54:53

0
for each $prefix in $prefixes { 
for each $base in $basewords { 
for each $suffix in $suffixes { 
echo $prefix.$base.$suffix."\n" 
}}} 

這會做你想要什麼,我相信沒有內置函數在PHP這樣做(儘管在Python)

+0

請參閱編輯。 – ParoX 2011-03-06 21:46:18