Что означает «6k views» и как я могу отформатировать это число в PHP?
k является аббревиатурой для префикса Kilo и означает тысячу. Итак, 6k означает шесть тысяч.
Вы можете форматировать число таким образом, используя следующую функцию с помощью деления:
function format($number) { $prefixes = 'kMGTPEZY'; if ($number >= 1000) { for ($i=-1; $number>=1000; ++$i) { $number /= 1000; } return floor($number).$prefixes[$i]; } return $number; }
Или используя логарифмическую базу 10 и возведение в степень:
function format($number) { $prefixes = 'kMGTPEZY'; if ($number >= 1000) { $log1000 = floor(log10($number)/3); return floor($number/pow(1000, $log1000)).$prefixes[$log1000-1]; } return $number; }
«6k views» в StackOverflow относится к количеству просмотров, полученных вопросом. Это означает 6000 просмотров.
Если вы хотите форматировать аналогичный номер стиля в php, попробуйте что-то вроде
$number = ""; if( $value > 1000 ) { $number .= floor($value / 1000) . "k"; } else { $number .= $value; } echo $number . " views".
Очевидно, что вы можете добавлять случаи для представлений m, g и t, если это необходимо.
Сокращенное из http://tamlyn.org/2008/12/formatting-bytes-with-significant-figures-in-php/
/** Calculate $value to $sigFigs significant figures */ function sigFig($value, $sigFigs = 3) { //convert to scientific notation eg 12345 -> 1.2345x10^4 //where $significand is 1.2345 and $exponent is 4 $exponent = floor(log10(abs($value))+1); $significand = round(($value / pow(10, $exponent)) * pow(10, $sigFigs)) / pow(10, $sigFigs); return $significand * pow(10, $exponent); } /** Format $value with the appropriate SI prefix symbol */ function format($value, $sigFigs = 3) { //SI prefix symbols $units = array('', 'k', 'M', 'G', 'T', 'P', 'E'); //how many powers of 1000 in the value? $index = floor(log10($value)/3); $value = $index ? $value/pow(1000, $index) : $value; return sigFig($value, $sigFigs) . $units[$index]; }
Выполнение *11
потому что *10
слишком очевидно
for($number = 100; $number < 100000000000000000000; $number*=11) { echo format($number), PHP_EOL; }
дает
100 1.1k 12.1k 133k 1.46M 16.1M 177M 1.95G 21.4G 236G 2.59T 28.5T 314T 3.45P 38P 418P 4.59E 50.5E
Если вам нужны десятичные знаки, используйте выше, иначе решение Gumbo будет более компактным. дает:
100 1k 12k 133k 1M 16M 177M 1G 21G 235G 2T 28T 313T 3P 37P 417P 4E 50E
«6k views» означает 6 киловатт или 6000 просмотров. Вы можете извлечь это число в PHP с помощью intval
и умножить на 1,000:
$val = intval("6k views") * 1000; // = 6000
$number="6000"; $val=($number/1000)."k"; //= 6k
или если $number="6k";
echo str_replace("k","000",$number);
В 6k
k
означает kilo
(надеюсь, вы знаете), что равно 6000
. Вы заменяете тысячу фигур на k
, вот и все. Надеюсь, это поможет 🙂
function sigFig($value, $sigFigs = 3) { setlocale(LC_ALL, 'it_IT@euro', 'it_IT', 'it'); $exponent = floor(log10(abs($value))+1); $significand = round(($value / pow(10, $exponent)) * pow(10, $sigFigs)) / pow(10, $sigFigs); return $significand * pow(10, $exponent); } function format($value, $sigFigs = 3) { $numero = $value; if ($numero > 9999) { $units = array('', 'k', 'M', 'G', 'T', 'P', 'E'); $index = floor(log10($value)/3); $value = $index ? $value/pow(1000, $index) : $value; return sigFig($value, $sigFigs) . $units[$index]; }else{ return number_format($numero, 0, '', '.'); ; } //Resultados: //9999 -> 9.999 views //10000 -> 10k views //10200 -> 10,2k views }