Het verandert $number_part[1] (dus de 2e waarde van die array, genaamd $number_part).
Een deel van de string wordt vervangen door $separator (de <br> denk ik).
Hij begint met vervangen vanaf $precision (de komma in je voorbeeld).
Gezien je 0 geeft als lengte, neemt hij de rest van de string.
Wat hij dus doet: is alles na de eerste komma vervangen door een <br> (= enter).
De functie substr_replace "Replaces text within a portion of a string".
Dus het vervangt een stukje tekst door andere tekst, in een deel van de string (tekenreeks).
Eigenlijk zou je dit veel beter via str_split() kunnen doen, want dat doe je nu in feitelijk ook.
En getallen afronden doe je beter met round().
Naar beneden afronden met floor() en naar boven afronden met abs().