Uhm... non va...
Con la funzione messa così:

Codice PHP:
$cambiamento "si"
$livello 1
$textfile fopen("ciclo.txt"r); 
$textfile2 fopen("ciclonew.txt"w); 

while (
$cambiamento == "si")  { 
    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); 
    } 

Su questo file di input iniziale:

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

Ottengo questo output:

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

E in più entra in loop...
Se invece cambio la condizione del while esterno in

Codice PHP:
while ($cambiamento <> "si"
non entra più in loop ma smette di funzionare... :-s