si funziona grazie mille.
dopo di chè ho provato a metterci le mani e ovviamente non funziona più.
siccome ho due cicli annidati ho modificato il tuo codice così:

Codice PHP:
function maggiore($i$args$quale) {
    return 
$i $args[$quale];
}

function 
minore($i$args$quale) {
    return 
$i $args[$quale];
}

function 
ciclo($partenza$partenza2$condizione$condizione2$incremento$incremento2$cond_args = array()) {
    for (
$x $partenzacall_user_func($condizione$x,  $cond_args'larghezza'); $incremento == 'sottrai' $x-- : $x++) {
        for (
$y=$partenza2call_user_func($condizione2$y$cond_args'altezza'); $incremento2 == 'sottrai' $y-- : $y++)
        {
                    echo 
"si";
        }
    }
}


$larghezza=400;
$altezza=250;

ciclo(0,0,'minore','minore','aggiungi','aggiungi',array('larghezza' => $larghezza),array('altezza'=>$altezza)); 
sembra che non entri nel secondo ciclo.
qual'è il problema?

grazie ancora