一般情况下在编写统计出文件的大小的函数后,由于递归的原因需要再编写一个单位转换的函数,使统计出的大小能以更好的方式显出来,但是这就将用两个函数来实现统计目录或文件大小并提高大小信息的可读性,现在可以用在函数内定义函数的方法来一个函数来解决这两个问题,并且灵活运用的三元运算符的嵌套来进行存储单位的转换。
注意:三元运算符的嵌套方式,在三元运算符中嵌套三元运算符的表达式需要用括号括起来,否则出错。
- function countsize($name){
- function countdirsize($dirname){
- $dirsize=0;
- $opendir=opendir($dirname);
- while($filedir=readdir($opendir)){
- if($filedir!='.' && $filedir!='..'){
- $filedir=$dirname.directory_separator.$filedir;
- if(is_dir($filedir))
- $dirsize+=countdirsize($filedir);
- else
- $dirsize+=filesize($filedir);
- }
- }
- closedir($opendir);
- return $dirsize;
- }
- function convertunits($size){
- 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' ) ) );
- }
- if(is_dir($name)){
- return convertunits(countdirsize($name));
- }else{
- return convertunits(filesize($name));
- }
- }
- $name='phpmyadmin'.directory_separator.'pmd'.directory_separator.'scripts';
- echo countsize($name);
|
原文地址:
阅读(351) | 评论(0) | 转发(0) |