There are 3 arrays end, suff, pre

Array ( [end] => Array ( [0] => Array ( [text] => ый ) ) Array ( [suff] => Array ( [0] => Array ( [text] => енн ) [1] => Array ( [text] => нн ) ) Array ( [pre] => Array ( [0] => Array ( [text] => а ) [1] => Array ( [text] => ан ) ) ) 

The question is how to multiply them, not the values ​​of course, but the arrays. In other words, how to eventually produce a 1in array, with all possible variations of alternation, the value of these arrays.

    2 answers 2

     $yourArray = array($pre, $suff, $end); 

    Is not it so?

    PS I can confuse something with C #)

    But, this will definitely be a working version:

     $yourArray = array( array('а', 'ан'), array('енн', 'нн'), array('ый'), ); echo $yourArray[0][0].$yourArray[1][0].$yourArray[2][0] // аенный //и т.д. 
    • Necrophilia psto. No, your example can be called "addition". I then needed something like a mysql analogue cross join (cross join). - Andrey Zabironin

    What you need:

    $allstring =

    true - multiplies all elements,

    false - multiplies in the same way and not complete parts.

     public static function doMultiply($array, $allstring) { $outArray = []; $sizeOfArray = sizeof($array); $countOfArray = count($array); for ($p = $sizeOfArray - 1; $p >= 0; $p--) { if ($allstring) { $p = 0; } for ($firstkey1 = $sizeOfArray; $firstkey1 < $sizeOfArray * 2; $firstkey1++) { $firstkey = $firstkey1 - $p; if ($p == 0) { $firstkey1 = $sizeOfArray * 2; } if ($firstkey >= $countOfArray) { $firstkey = $firstkey - count($array); } $combinations = 1; $array2 = array(); $array2 = $array; for ($key = $firstkey; $key < $p + $firstkey; $key++) { $key1 = $key; if ($key1 >= $countOfArray) { $key1 = $key1 - $countOfArray; } unset($array2[$key1]); } $array2 = array_values($array2); for ($i = 0; $i < sizeof($array2); $i++) { $combinations *= sizeof($array2[$i]); $currentKeys[$i] = 0; } $n = sizeof($array2) - 1; for ($i = 0; $i < $combinations; $i++) { $string = null; for ($k = 0; $k < sizeof($array2); $k++) { $string .= $array2[$k][$currentKeys[$k]] . " "; } $outArray[] = trim($string); $currentKeys[$n]++; for ($k = sizeof($array2) - 1; $k >= 0; $k--) { if ($currentKeys[$k] >= sizeof($array2[$k])) { $currentKeys[$k] = 0; if ($k - 1 >= 0) { $currentKeys[$k - 1]++; } } } } } } return $outArray; }