usort - 更多参数

发布于 2024-08-25 21:30:27 字数 1151 浏览 10 评论 0原文

你好,我如何向 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);
?>

Hallo, how can I pass more parameters to usort?
I have different functions, which are very similar in structure, I want to have just one function:

<?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);
?>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫九 2024-09-01 21:30:27

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

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

You can use a much simpler function:

function sortNumberAsc($a, $ b){
       $a = $a['number'];
       $b = $ b['number'];  
       if ($a == $b) return 0;
       return ($a < $b) ? -1 : +1;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文