zoukankan      html  css  js  c++  java
  • PHP算法——文件大小排序(KB、MB、GB、TB)

    在学校呆着没意思,重温了一下PHP,看看以前写过的函数,突然想写一下已知文件大小,对数据排序。

    比如: 1.3G、153MB、458KB、998M、0.99G(这里未考虑MB与Mb的区别,一般不会涉及Mb的运算,所以Mb、MB、mb都看定为Mb,其实MB=8*Mb)

    函数如下:

    <?php
     
         function sortSize($arr){
             $arr2 = $arr;
             $arr3 = array();
             if(!is_array($arr)){
                 return false;
             }
             array_walk($arr,'getByteSize');
             asort($arr);
             foreach($arr as $key=>$value){
                 $arr3[] = $arr2[$key];
             }
             return $arr3;
         }
         function getByteSize(&$size){
             $base = array(array('KB','K'),array('MB','M'),array('GB','G'),array('TB','T'));
             $sum = 1;
             for($i=0; $i<4; $i++){
                 if(stripos($size,$base[$i][0]) || stripos($size,$base[$i][1])){
                     $size = $sum*str_ireplace($base[$i],'',$size)*1024;
                     break;
                 }
                 $sum*=1024;
             }
         }
         $arr = array('23M','1.02G','987MB','45MB','0.98G');
         print_r(sortSize($arr));
     
     ?>


    怎么看着怎么不爽,代码那么多,改了改,清爽了没?

    <?php
     
         function sortSize($a,$b){
             $a = getByteSize($a);
             $b = getByteSize($b);
             if($a == $b){
                 return 0;
             }
             return ($a>$b)? 1 : -1;
             
         }
         function getByteSize($size){
             $base = array(array('KB','K'),array('MB','M'),array('GB','G'),array('TB','T'));
             $sum = 1;
             for($i=0; $i<4; $i++){
                 if(stripos($size,$base[$i][0]) || stripos($size,$base[$i][1])){
                     $size = $sum*str_ireplace($base[$i],'',$size)*1024;
                     break;
                 }
                 $sum*=1024;
             }
             return $size;
         }
         $arr = array('23M','1.02G','987MB','45MB','0.98G');
         usort($arr,'sortSize');
         print_r($arr);
     
     ?>

    欢迎留言指教

  • 相关阅读:
    去重
    JavaScript 数组
    变量
    2017.3.19 for
    2017.3.19 if,for
    2017.3.14
    2017.3.10
    2017.3.9
    2017.3.7-1
    2017.3.7
  • 原文地址:https://www.cnblogs.com/picaso/p/2673635.html
Copyright © 2011-2022 走看看