перестановка/создание комбинации префикса и суффикса

У меня есть массив префиксов, массив базовых слов и массив суффиксов. Я хотел бы увидеть каждую комбинацию, которую можно составить.

Пример:

   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

Как я могу это сделать?

Изменить: спасибо за все ответы, я просматриваю решения, но похоже, что если префиксов нет, то комбинация не удастся. Он по-прежнему должен проходить через базовые слова и суффиксы, даже без префиксов.


person ParoX    schedule 06.03.2011    source источник


Ответы (3)


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

Это будет делать то, что вы хотите, я считаю, что в php нет встроенной функции для этого (хотя в python она есть)

person J V    schedule 06.03.2011

это должно помочь вам начать:

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

person Community    schedule 06.03.2011

person    schedule
comment
Если я просто добавлю array_push($prefixes, ""); .. array_push($words, ""); array_push($prefixes, "");, тогда он сделает то, что мне нужно. Также обратите внимание, что у вас есть суффикс $ в параметрах, а не суффиксы - person ParoX; 07.03.2011
comment
вздох, пожалуйста, сначала опубликуйте «полный» вопрос, а не меняйте его несколько раз. - person ; 07.03.2011