• PHP经验——usort使用函数中调用引用函数的出错问题


    看着标题很绕口,大致讲解一下。

    usort函数用法如下:

    bool usort ( array &$array , callback $cmp_function )

    第一个参数是一个数组(引用),第二个参数是要自定义的排序函数。

    我自己写了一个给文件大小排序的函数,使用usort,名为sortSize(),而sortSize又要调用另一个引用函数getByteSize(),示意图如下

    出错源代码:

    <?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;
             }
         }
         $arr = array('23M','1.02G','987MB','45MB','0.98G');
         usort($arr,'sortSize');
         print_r($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);
     
     ?>

     

    这个看来得背下来了~~~~

  • 相关阅读:
    CodeForces 404C Ivan and Powers of Two
    CodeForces 433C Ryouko's Memory Note-暴力
    if not
    python3的print函数
    交叉熵
    tensorflow一个很好的博客
    关于第几维的问题
    更新软件
    tensorflow训练代码
    tensorflow的一些函数
  • 原文地址:https://www.cnblogs.com/picaso/p/2673726.html
Copyright © 2020-2023  润新知