[28期] 编写一个自定义函数解决统计文件或目录大小并转换存储单位。

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

<?php

  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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值