Il perche' e' semplice: dopo il primo controllo (che e' verificato) $string vale "160px". Il problema e' che dopo sullo stesso valore esegui altri controlli e $string viene trasformato in 160 (visto che il controllo e' una disuguaglianza numerica) e quindi e' verificato il terzo controllo che fa diventare $string "120px".
Suggerimento di refactoring:
Codice PHP:
function rating_piccoli( $string ) {
if ( $string < 0 ) return $string;
if ( $string <= 50 ) return "160px";
if ( $string <= 150 ) return "140px";
if ( $string <= 200 ) return "120px";
if ( $string <= 300 ) return "100px";
if ( $string <= 500 ) return "80px";
if ( $string <= 1000 ) return "60px";
if ( $string <= 1500 ) return "40px";
if ( $string > 1500 ) return "20px";
}