PHP Подсчитайте раунд тысяч до уровня стиля K, как facebook Share. , , Кнопка кнопки Twitter

Хорошо, поэтому я пытаюсь превратить счетчик попаданий в круглые тысячи на одну цифру и отображать 3 тысячи обращений, например, 3K, например, Facebook Share и Twitter. Вот мой код. Любая идея, что я делаю неправильно?

$postresultscount = (($resultscount) ? $resultscount->sumCount : 1); $k = 1000; $L = ''; if ($postresultscount > $k) { $echoxcount = round($postresultscount/$k); $L = 'K'; } else if ($postresultscount == $k) { $echoxcount = 1; $L = 'K'; } else { $echoxcount = $postresultscount; } echo 'document.write("'.$echoxcount.' '.$L.'")'; 

немного лучше, чем должность Юки

 if ($value > 999 && $value <= 999999) { $result = floor($value / 1000) . ' K'; } elseif ($value > 999999) { $result = floor($value / 1000000) . ' M'; } else { $result = $value; } 

Здесь идет функция PHP для форматирования чисел до ближайших тысяч, таких как Килос, Миллионы, Миллионы и Триллионы с запятой

функция

 function thousandsCurrencyFormat($num) { $x = round($num); $x_number_format = number_format($x); $x_array = explode(',', $x_number_format); $x_parts = array('k', 'm', 'b', 't'); $x_count_parts = count($x_array) - 1; $x_display = $x; $x_display = $x_array[0] . ((int) $x_array[1][0] !== 0 ? '.' . $x_array[1][0] : ''); $x_display .= $x_parts[$x_count_parts - 1]; return $x_display; } 

Вывод

 thousandsCurrencyFormat(3000) - 3k thousandsCurrencyFormat(35500) - 35.5k thousandsCurrencyFormat(905000) - 905k thousandsCurrencyFormat(5500000) - 5.5m thousandsCurrencyFormat(88800000) - 88.8m thousandsCurrencyFormat(745000000) - 745m thousandsCurrencyFormat(2000000000) - 2b thousandsCurrencyFormat(22200000000) - 22.2b thousandsCurrencyFormat(1000000000000) - 1t (1 trillion) 

Ресурсы

http://kahthong.com/2013/01/php-format-currency-nearest-thousands-such-kilos-millions-billions-and-trillions

Используйте floor вместо round если вы хотите, чтобы 3500 округлилось до 3 K

В противном случае ваш код работает, хотя и проблематично. Попробуй это:

 if ($postresultscount > 1000) { $result = floor($postresultscount / 1000) . 'K'; } else { $result = $postresultscount; } echo 'document.write("' . $result . '")"; 

Также кажется, что вы пишете JavaScript с помощью PHP – позаботьтесь.

Это модифицированная версия с k и m в нижнем регистре и отображение одного десятичного знака для миллинов.

 <?php if ($value > 999 && $value <= 999999) { $result = floor($value / 1000) . 'k'; } elseif ($value > 999999) { $result = number_format((float)$value , 1, '.', '')/1000000 . 'm'; } else { $result = $value; } ?> 
 if ($postresultscount > 999999) { $postresultscount = floor($postresultscount / 1000000) . ' M'; } elseif ($postresultscount > 999) { $postresultscount = floor($postresultscount / 1000) . ' K'; } echo $postresultscount; 
 function print_number_count($number) { $units = array( '', 'K', 'M', 'B'); $power = $number > 0 ? floor(log($number, 1000)) : 0; if($power > 0) return @number_format($number / pow(1000, $power), 2, ',', ' ').' '.$units[$power]; else return @number_format($number / pow(1000, $power), 0, '', ''); }