置换/生成组合前缀和后缀

时间:2011-03-06 21:29:19

标签: php arrays combinations permutation

我有一系列前缀,一个基本单词数组和一个后缀数组。我想看看可以做出的每一种组合。

示例:

   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

我该怎么做?

编辑:感谢所有的回复,我正在通过解决方案,但似乎没有前缀,那么它将失败组合。即使没有任何前缀,它仍然应该通过基本单词和后缀。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

这会做你想要的,我相信在php中没有内置函数(虽然有python)

答案 2 :(得分: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;
}
相关问题