Ok so I am trying to turn my hit counter to round thousands to a single digit too display 3 thousand hits as 3K for example, like the Facebook Share and Twitter Tweet Buttons do. Here is my code. Any idea what I am doing wrong?
$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.'")';
Here comes a PHP
function to format numbers to nearest thousands such as Kilos, Millions, Billions, and Trillions with comma
Function
function thousandsCurrencyFormat($num) { if($num>1000) { $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; } return $num; }
Output
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)
Resources
https://code.recuweb.com/2018/php-format-numbers-to-nearest-thousands/
function shortNumber($num) { $units = ['', 'K', 'M', 'B', 'T']; for ($i = 0; $num >= 1000; $i++) { $num /= 1000; } return round($num, 1) . $units[$i]; }
I adapted this one from a function created to display bytes in human readable form by bashy here:
https://laracasts.com/discuss/channels/laravel/human-readable-file-size-and-time
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With