zoukankan      html  css  js  c++  java
  • 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);
     
     ?>

     

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

  • 相关阅读:
    Defining Database and Instance【数据库与实例】
    安装rlwrap错误的问题解决方法
    ORACLE CONTROL FILE 笔记
    NTP时间服务器配置与解析
    虚拟机下Linux系统安装vmtool工具
    ORACLE clusterware组成
    ORACLE RAC集群硬件资源管理与单节点的区别
    Clusterware后台进程
    oracle数据库重建EM
    微机原理之计算机系统导论
  • 原文地址:https://www.cnblogs.com/picaso/p/2673726.html
Copyright © 2011-2022 走看看