Revisa detenidamente la documentación oficial de PHP sobre esa función.
Por lo demás .. revisa bien que tu campo de tu BD contiene sólo el n° .. sin puntos ni espacios delante . .ni detras que pudieran interferir. Es recomendable siempre "limipar" el dato antes de aplicarle formato .. minimo aplicar un trim() y si temes que puedan ingresar . puntos o , comas eventualmente .. usa str_replace() para quitarlos antes de aplicar number_format():
Código PHP:
$precio = trim(number_format($array['precio'], 2, '.', ','));
Un saludo,