【问题标题】:usort - more parametersusort - 更多参数
【发布时间】:2010-03-18 19:35:16
【问题描述】:

你好,如何向 usort 传递更多参数? 我有不同的功能,它们的结构非常相似,我只想拥有一个功能:

<?php

     $arr = array(      array('number' => 100, 'string'=>'aaa'),
                array('number'=>50, 'string'=>'bdef'),
                array('number'=>150, 'string'=>'cbba')
            );


    usort($arr,  'sortNumberDesc');

    //How can I use just a single function?
    //How can I pass further parameters to usort?

    function sortNumberDesc($a, $b){
       $a = $a['number'];
       $b = $b['number'];
       if ($a == $b) return 0;
       return ($a > $b) ? -1 : +1;
    }

    function sortNumberAsc($a, $b){
       $a = $a['number'];
       $b = $b['number'];  
       if ($a == $b) return 0;
       return ($a < $b) ? -1 : +1;
    }

    //I want to do the same with just one function:
    //Sort ID is the search index, reverse DESC or ASC 
    function sort($a, $b, $sortId='number', $reverse = 0){
       $a = $a[$sortId];
       $b = $b[$sortId]; 
       if ($a == $b) return 0;
       if($reverse == false) return ($a > $b) ? -1 : +1;
       else return ($a < $b) ? -1 : +1;
    }

    print_r($arr);
?>

【问题讨论】:

    标签: php usort


    【解决方案1】:

    你可以使用一个更简单的函数:

    function sortNumberAsc($a, $ b){
           $a = $a['number'];
           $b = $ b['number'];  
           if ($a == $b) return 0;
           return ($a < $b) ? -1 : +1;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-09-13
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多