Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Count round thousand to a K style count like facebook Share . . . Twitter Button ect

Tags:

php

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.'")'; 
like image 653
Anthony Delgado Avatar asked Nov 07 '10 04:11

Anthony Delgado


2 Answers

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/

like image 87
RafaSashi Avatar answered Sep 20 '22 21:09

RafaSashi


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

like image 20
Justin Vincent Avatar answered Sep 22 '22 21:09

Justin Vincent