PHP实现格式化文件数据大小显示的方法

有时候我们需要在网页上显示某个文件的大小,或者是其它数据的大小数字。

这个数字往往从跨度很大,如果以B为单位的话可能是个位,如果1G则长达1073741824的数字,这个时候我们就需要根据大小来格式化,比如小于1K则以B为单位显示,小于1M则以KB为单位显示,小于1G则以MB为单位显示,以此类推...

格式化函数参考如下:

//格式化size显示

function formatSize($b,$times=0){

if($b>1024){

$temp=$b/1024;

return formatSize($temp,$times+1);

}else{

$unit=‘B‘;

switch($times){

case ‘0‘:$unit=‘B‘;break;

case ‘1‘:$unit=‘KB‘;break;

case ‘2‘:$unit=‘MB‘;break;

case ‘3‘:$unit=‘GB‘;break;

case ‘4‘:$unit=‘TB‘;break;

case ‘5‘:$unit=‘PB‘;break;

case ‘6‘:$unit=‘EB‘;break;

case ‘7‘:$unit=‘ZB‘;break;

default: $unit=‘单位未知‘;

}

return sprintf(‘%.2f‘,$b).$unit;

}

}

说明:

其中参数$b是以B为单位的数字,$times是用来标识这个函数递归了多少次的。

其中不常用的单位TB、PB、EB、ZB请参考下面的备注(来源于网络):

1bit(这个比特表示一个二进制数字)

1Byte(这个单词音译过来也叫“比特”但是表示一个十六进制的数字)

1B=1Byte=8bit

1 kB = 1024 B (kB - kilobyte) 千

1 MB = 1024 kB (MB - megabyte) 兆

1 GB = 1024 MB (GB - gigabyte) 吉

1 TB = 1024 GB (TB - terabyte) 太

1 PB = 1024 TB (PB - petabyte) 拍

1 EB = 1024 PB (EB - eksabyte) 艾

1 ZB = 1024 EB (ZB - zettabyte) 皆

1 YB = 1024 ZB (YB - yottabyte) 佑

1 BB = 1024 YB (BB - brontobyte)

yotta, 尧[它], Y. 10^21,

zetta, 泽[它], Z. 10^18,

exa, 艾[可萨], E. 10^15,

peta, 拍[它], P. 10^12,

tera, 太[拉], T. 10^9,

giga, 吉[咖], G. 10^6,

mega, 兆,M. 10^3

参考:http://www.lai18.com/content/368948.html

kelinlin > 《PHP实用问题解决案例》

时间: 2024-08-30 00:10:42

PHP实现格式化文件数据大小显示的方法的相关文章

文件_ _android从资源文件中读取文件流并显示的方法

======== 1   android从资源文件中读取文件流并显示的方法. 在android中,假如有的文本文件,比如TXT放在raw下,要直接读取出来,放到屏幕中显示,可以这样: private void doRaw(){ InputStream is = this.getResources().openRawResource(R.raw.ziliao); try{ doRead(is); }catch(IOException e){ e.printStackTrace(); } } pri

用CSS控制图片大小显示的方法

图片自动适应大小是一个非常常用的功能,在进行制作的时候为了防止图片撑开容器而对图片的尺寸进行必要的控制,我们可不可以用CSS控制图片使它自适应大小呢? 可以通过按比例缩小或者放大到某尺寸(自己指定),来保持图片不变形走样的完全显示. 对于标准浏览器(如Chrome/Firefox),或者IE7/8浏览器,直接使用max-width,max-height:或者min-width,min-height的CSS属性即可.如: 我们想到了一个比较简单的解决方法,虽然不是非常的完美,如果您的要求不是非常高

IOS开发中UILabel自适应大小显示的方法

1,根据label中的文字内容自动换行显示的方法 1>,认识两个属性 @property(nonatomic) NSInteger numberOfLines; @property(nonatomic) NSLineBreakMode lineBreakMode; 其中NSLineBreakMode为枚举类型 typedef NS_ENUM(NSInteger, NSLineBreakMode) { /* What to do with long lines */ NSLineBreakByWo

TortoiseSVN文件夹及文件图标不显示解决方法

由于自己的电脑是win7(64位)的,系统安装TortoiseSVN之后,其他的功能都能正常的使用,但是就是文件夹或文件夹的左下角就是不显示图标,这个问题前一段时间就遇到了(那个时候没找到合适的答案),这段时间重新学习svn 的使用,这个问题没解决,不舒服,没有了图标,就像打仗没有了旗帜一样: 对于SVN来说,因为每个图标都代表着不同的含义,预示着不同的状态,是指示灯的作用,如果没有正确的图标很可能造成数据的丢失等 今天算是找到了问题的解决方法: 第一: 输入:win+R,输入regedit,调

TortoiseSVN文件夹及文件图标不显示解决方法 [转]

由于自己的电脑是win7(64位)的,系统安装TortoiseSVN之后,其他的功能都能正常的使用,但是就是文件夹或文件夹的左下角就是不显示图 标,这个问题前一段时间就遇到了(那个时候没找到合适的答案),这段时间重新学习svn 的使用,这个问题没解决,不舒服,没有了图标,就像打仗没有了旗帜一样: 对于SVN来说,因为每个图标都代表着不同的含义,预示着不同的状态,是指示灯的作用,如果没有正确的图标很可能造成数据的丢失等 今天算是找到了问题的解决方法: 第一: 输入:win+R,输入regedit,

修复电脑图片文件图标不显示的方法

最近魅力网络安装了爱奇艺,发现爱奇艺自动安装了个万能播放器,打开图片也是用那个打开的,默认关联了图片文件,后来卸载了爱奇艺,发现图片文件的图标不显示了,看着很是不舒服为此只有手工更改了. 方法如下:我的电脑---文件夹选项---文件类型----点还原---高级---更改图标---搜索%SystemRoot%\system32\shimgvw.dll

TortoiseGit文件夹和文件图标不显示解决方法

试了两种方法, 1.修改Max Cached Icons http://www.open-open.com/lib/view/open1414396787325.html 2.修改图标排序 http://jingyan.baidu.com/article/359911f552827957fe0306f8.html 都不起作用,使用这个,保存为reg文件,运行即可 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\M

linux 查看cpu 内存 硬盘 文件夹大小

文件夹大小 显示cpu使用率 top 1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2**uniq命令:删除重复行;wc –l命令:统计行数** 1.2 查看CPU核数 # cat /proc/cpuinfo | grep "cpu cores" | uniq cpu cores : 4 1.3 查看CPU型号 # cat /proc/cpuinfo | gre

【Android笔记】Android统计文件夹大小,删除文件夹下的所有文件方法

1.获取文件夹大小: 1 /** 2 * 获取文件夹大小 3 * @param file File实例 4 * @return long 5 */ 6 public static long getFolderSize(java.io.File file){ 7 8 long size = 0; 9 try { 10 java.io.File[] fileList = file.listFiles(); 11 for (int i = 0; i < fileList.length; i++) 12