Sometimes we need to display the size of a file on the web page, or the size of other data .
This number often spans a lot. If it is in B, it may be a single digit. If it is 1G, it will be a number up to 1073741824. At this time, we need to format it according to the size. For example, if it is less than 1K, it will be displayed in B. , if it is less than 1M, it will be displayed in KB, if it is less than 1G, it will be displayed in MB, and so on...
The formatting function reference is as follows:
<span>//</span><span>格式化size显示</span> <span>function</span> formatSize(<span>$b</span>,<span>$times</span>=0<span>){ </span> <span>if</span>(<span>$b</span>>1024<span>){ </span><span>$temp</span>=<span>$b</span>/1024<span>; </span><span>return</span> formatSize(<span>$temp</span>,<span>$times</span>+1<span>); }</span><span>else</span><span>{ </span><span>$unit</span>='B'<span>; </span><span>switch</span>(<span>$times</span><span>){ </span><span>case</span> '0':<span>$unit</span>='B';<span>break</span><span>; </span><span>case</span> '1':<span>$unit</span>='KB';<span>break</span><span>; </span><span>case</span> '2':<span>$unit</span>='MB';<span>break</span><span>; </span><span>case</span> '3':<span>$unit</span>='GB';<span>break</span><span>; </span><span>case</span> '4':<span>$unit</span>='TB';<span>break</span><span>; </span><span>case</span> '5':<span>$unit</span>='PB';<span>break</span><span>; </span><span>case</span> '6':<span>$unit</span>='EB';<span>break</span><span>; </span><span>case</span> '7':<span>$unit</span>='ZB';<span>break</span><span>; </span><span>default</span>: <span>$unit</span>='单位未知'<span>; } </span><span>return</span> <span>sprintf</span>('%.2f',<span>$b</span>).<span>$unit</span><span>; } }</span>
Call:
<span>echo</span> formatSize('20667564');
The result is:
19.71MB
Description:
The parameter $b is a number in B, and $times is used to identify how many times this function has been recursed.
For the uncommon units TB, PB, EB, and ZB, please refer to the notes below (sourced from the Internet):
1bit (this bit represents a binary number)
1Byte (this word is also called "bit" when transliterated but represents a hexadecimal number)
1B = 1 Byte = 8 bit >1 TB = 1024 GB (TB - terabyte) 1 PB = 1024 TB (PB - petabyte) 1 EB = 1024 PB (EB - eksabyte) 1 ZB = 1024 EB (ZB - zettabyte) both
1 YB = 1024 ZB (YB - yottabyte) YO
1 BB = 1024 YB (BB - brontobyte)
yotta, Yao[it], Y. 10^21,
zetta, Ze[it], Z. 10^18,
exa, Ai[Khazar], E. 10^15,
peta, shoot[it], P. 10^12,
tera , 太[拉], T. 10^9,
giga, 吉[卡], G. 10^6,
mega, megabyte, M. 10^3
http://www.bkjia.com/PHPjc/936474.html
www.bkjia.com