Time for a nest of some foreach loops!
<?php $array1 = array('rough', 'smooth', 'coarse'); $array2 = array('shiny', 'matte'); $array3 = array('very large', 'large', 'medium', 'small'); foreach($array1 as $i) foreach($array2 as $j) foreach($array3 as $k) $output[] = "$i, $j, $k"; var_dump($output); /* ouput array 0 => string 'rough, shiny, very large' (length=24) 1 => string 'rough, shiny, large' (length=19) 2 => string 'rough, shiny, medium' (length=20) 3 => string 'rough, shiny, small' (length=19) 4 => string 'rough, matte, very large' (length=24) 5 => string 'rough, matte, large' (length=19) 6 => string 'rough, matte, medium' (length=20) 7 => string 'rough, matte, small' (length=19) 8 => string 'smooth, shiny, very large' (length=25) 9 => string 'smooth, shiny, large' (length=20) 10 => string 'smooth, shiny, medium' (length=21) 11 => string 'smooth, shiny, small' (length=20) 12 => string 'smooth, matte, very large' (length=25) 13 => string 'smooth, matte, large' (length=20) 14 => string 'smooth, matte, medium' (length=21) 15 => string 'smooth, matte, small' (length=20) 16 => string 'coarse, shiny, very large' (length=25) 17 => string 'coarse, shiny, large' (length=20) 18 => string 'coarse, shiny, medium' (length=21) 19 => string 'coarse, shiny, small' (length=20) 20 => string 'coarse, matte, very large' (length=25) 21 => string 'coarse, matte, large' (length=20) 22 => string 'coarse, matte, medium' (length=21) 23 => string 'coarse, matte, small' (length=20) */ ?>