Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1552311
  • 博文数量: 1481
  • 博客积分: 26784
  • 博客等级: 上将
  • 技术积分: 17045
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-12 09:22
文章分类

全部博文(1481)

文章存档

2014年(10)

2013年(353)

2012年(700)

2011年(418)

分类: IT业界

2011-07-18 13:23:37

  一般情况下在编写统计出文件的大小的函数后,由于递归的原因需要再编写一个单位转换的函数,使统计出的大小能以更好的方式显出来,但是这就将用两个函数来实现统计目录或文件大小并提高大小信息的可读性,现在可以用在函数内定义函数的方法来一个函数来解决这两个问题,并且灵活运用的三元运算符的嵌套来进行存储单位的转换。
  注意:三元运算符的嵌套方式,在三元运算符中嵌套三元运算符的表达式需要用括号括起来,否则出错。

  1. function countsize($name){
  2. function countdirsize($dirname){
  3. $dirsize=0;
  4. $opendir=opendir($dirname);
  5. while($filedir=readdir($opendir)){
  6. if($filedir!='.' && $filedir!='..'){
  7. $filedir=$dirname.directory_separator.$filedir;
  8. if(is_dir($filedir))
  9. $dirsize+=countdirsize($filedir);
  10. else
  11. $dirsize+=filesize($filedir);
  12. }
  13. }
  14. closedir($opendir);
  15. return $dirsize;
  16. }
  17. function convertunits($size){
  18. return $size < pow(2, 10) ? $size.'bytes' : ( $size < pow(2,20) ? round($size/pow(2,10),2).'kb' : ($size < pow(2, 30)? round($size/pow(2, 20),2).'mb' : ($size < pow(2, 40) ? round($size/pow(2,30),2).'gb' : round($size/pow(2, 40),2).'tb' ) ) );
  19. }
  20. if(is_dir($name)){
  21. return convertunits(countdirsize($name));
  22. }else{
  23. return convertunits(filesize($name));
  24. }
  25. }
  26. $name='phpmyadmin'.directory_separator.'pmd'.directory_separator.'scripts';
  27. echo countsize($name);

原文地址:

阅读(315) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~