Grazie 1000...
Sono riuscito a scrivere la funzione...
fa tutto quello che deve fare ma alla fine entra in loop e non riesco a capire perchè...

Codice PHP:
$cambiamento "si";
$livello 1;
while (
$cambiamento == "si")  {
    
$textfile fopen("ciclo.txt"r);
    
$textfile2 fopen("ciclonew.txt"w);
    while (
$rigafile fgets($textfile,1024))   {
        
$campiriga explode("|"$rigafile);
        if (
$campiriga[1] < $livello)   {
            
$campiriga[1] = chiamafunzione();
            
$livello $campiriga[1];
            
$cambiamento "si";
        }else{
            
$cambiamento "no";
        }
        
$rigafile2 $campiriga[0] . "|" $campiriga[1] . "/n/r";
        
fwrite($textfile2$rigafile2);
    }

La variabile cambiamento mi serve per vedere se ci sono stati aggiornamenti di valore; in tal caso ricomincio a ciclare il file, altrimenti no....
la variabile livello settata ad 1 mi serve per far si che la funzione parta dalla terza riga del file alla prima iterazione (infatti al 3° rigo la condizione campiriga[1] < livello sarà verificata.
Il risultato è che il file si aggiorna nella forma ad esempio

1|4
2|4
3|4
4|4
5|4

Ma non esce più dal ciclo andando in loop :-s