Я пытаюсь отформатировать вывод чисел в php. У меня есть количество сообщений, которые появляются, а рядом с каждым пользователем общее количество сообщений. Но это показывает, что фактическое количество, я хочу, чтобы он показывал его в более коротком формате, на самом деле, так же, как они здесь, в SO с репутацией
есть идеи?
<? $numbers = array(100,1000,15141,3421); function format_number($number) { if($number >= 1000) { return $number/1000 . "k"; // NB: you will want to round this } else { return $number; } } foreach($numbers as $number) { echo $number . " : " . format_number($number); echo "\n"; }
function count_format($n, $point='.', $sep=',') { if ($n < 0) { return 0; } if ($n < 10000) { return number_format($n, 0, $point, $sep); } $d = $n < 1000000 ? 1000 : 1000000; $f = round($n / $d, 1); return number_format($f, $f - intval($f) ? 1 : 0, $point, $sep) . ($d == 1000 ? 'k' : 'M'); }
Использовать это Сократить длинные числа до K / M / B?
function number_format_short( $n, $precision = 1 ) { if ($n < 900) { // 0 - 900 $n_format = number_format($n, $precision); $suffix = ''; } else if ($n < 900000) { // 0.9k-850k $n_format = number_format($n / 1000, $precision); $suffix = 'K'; } else if ($n < 900000000) { // 0.9m-850m $n_format = number_format($n / 1000000, $precision); $suffix = 'M'; } else if ($n < 900000000000) { // 0.9b-850b $n_format = number_format($n / 1000000000, $precision); $suffix = 'B'; } else { // 0.9t+ $n_format = number_format($n / 1000000000000, $precision); $suffix = 'T'; }