Prova questo

Codice PHP:
<?php
function combine($arrayOfArrays)
{
   
$result = array();
   for (
$i=0;$i count($arrayOfArrays);$i++) {
       foreach (
$arrayOfArrays[$i] as $currentValue) {
           if (isset(
$result[$i-1])) {
               foreach(
$result[$i-1] as $previousArray) {
                   
$result[$i][] = array_merge($previousArray, array($currentValue));
               }
           }
           else {
               
$result[$i][] = array($currentValue);
           }    
       }
   }    
   return 
$result[count($arrayOfArrays)-1];
}
   
$blocchi = array(=> array('54####S','55####M','56####L'),
                  
=> array('57####Rosso','58####Verde','59####marrone'),
                  
=> array('60####40x60','61####60x90','62####80x120'),
                  
=> array('63####liscia','64####satinata','65####opaca','66####rotta'));

foreach (
combine($blocchi) as $value)
{
   echo 
implode(' ',$value)."<br/>";
}