php - usort - 更多参数

标签 php 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);
?>

最佳答案

您可以使用更简单的函数:

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

关于php - usort - 更多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2472809/

相关文章:

php foreach 为key,每两个数字为一组

PHP 排序速度

php - 用css设计php输出表

javascript - 如何在一个页面中使用多个脚本

php - 插入 DATE 意外行为。为什么?

php - 使用usort根据特定条件对多维数组进行排序

php - 如何对使用 mysql 查询但使用 PHP usort 函数排序的项目进行分页?

php - 在 PHP 中对多维数组进行排序

php - 根据给定的字符串对数组进行排序

php - 当 if 返回 false 时,如何退出 if 语句而不影响 php 的其余部分