2010-03-18 26 views
2

你好,我怎么能传递更多参数到usort? 我有不同的功能,它在结构上非常相似,我想只有一个功能: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); 
?> 

回答

3

您可以使用一个更简单的功能:

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