è il casting automatico: in PHP se tu tratti una stringa come un numero, per prima cosa l'interprete cerca di trasformarla in un numero, se fallisce torna un errore, ma se il numero è valido la trasforma in esso.

Non sono sicuro, che questo valga per TUTTE le versioni di PHP, io personalmente, preferisco sempre trasformare le stringhe che devono essere numeri in numeri (con intval o floatval o il settype).