a me è venuta in mente una cosa di questo tipo, sicuramente migliorabile
Codice PHP:
<?php
/* source.txt contiene i seguenti valori
riga 1
riga 2
riga 3
riga 4
riga 1
riga 2
riga 3
riga 4
riga 1
*/

$source "source.txt"//file sorgente
$max 4//numero di campi per riga in output

$string_out ""//stringa per gestione output

echo "<pre>";

$file file_get_contents($source); //prende il contenuto del file

$expl_sourceexplode("\n"$file); //divide il contenuto per righe 
                                    //(attenzione al parametro, può essere \n o \r\n 
                                    //a seconda del sistema operativo

$i 1//contatore

foreach($expl_source as $value) { //scorre i valori
    
if ($i == $max) { //se i è uguale al numero di campi per riga vado a capo 
        
$del "\r\n";
        
$i 0//resetta i
    
}
    else { 
//se i è diverso dal numero di campi per riga inserisce uno spazio
        
$del " "
    }
    
$string_out .= $value $del//compila la stringa di output
    
$i++; //incrementa i ad ogni ciclo
}

echo 
substr($string_out0, -); //prima di stampare a video, toglie l'eventuale 
                                  //carattere in più

echo "\r\n--- finito ---";

?>