Как с помощью php перебрать все сочетания слов из разных колонок csv?
Как читать csv, надеюсь, разберетесь. Какой-нибудь fgetcsv() в помощь. 
А перебирать вложенными циклами. Число циклов — число столбцов.
Ну и вот вариант для перебора всех вариантов для любого количества строк и столбцов:$arr = array(
    array('желтые', 'зеленые','синие'),
    array('длинные','короткие','узкие'),
    array('штаны','шорты','трусы'));

function getVariants($arr) {
    $variant = array();
    $result = array();
    $sizearr = sizeof($arr);

    function recursiv($arr, $variant, $level, $result, $sizearr){
        $level++;        
        if($level<$sizearr){
            foreach ($arr[$level] as $val){
                $variant[$level] = $val;
                $result = recursiv($arr, $variant, $level, $result, $sizearr);
            }
        }else{
            $result[] = $variant;
        }        
        return $result;    
    }
    $arrays = recursiv($arr, $variant, -1, $result, $sizearr);
    $result = array();
    foreach ($arrays as $str) {
        $result[] = implode(' ', $str);
    }
    return $result;
}

print_r(getVariants($arr));
сначала помещаем всё в три массива, и потом в тройном вложенном цикле проходим все комбинации.$colors = array('желтые', 'зеленые','синие');
$lengths= array('длинные','короткие','узкие');
$types = array('штаны','шорты','трусы');
$strings = array();
for ($i=0; $i<count($colors); $i++) {
    for ($j=0; $j<count($lengths); $j++) {
        for ($k=0; $k<count($types); $k++) {
            $strings[] = "$colors[$i] $lengths[$j] $types[$k]";
        }
    }
}
echo implode('<br>', $strings);