我可以使用usort按主要值排序1值,然后按次要值排序第二值吗?

时间:2017-11-02 09:15:00

标签: php usort

因此,此函数非常适合按1值

对数组或对象进行排序
            function sort( $a, $b )
            { 
              if(  $a['1'] ==  $b['1'] ){ return 0 ; } 
              return ($a['1'] < $b['1']) ? -1 : 1;
            }
            usort($myArray,'sort');  

但我希望它按值1主要值和值2秒排序,如果这可以用这个函数,或者只能用自定义函数吗?

2 个答案:

答案 0 :(得分:2)

当然,这是可能的。要添加第二个排序表达式,您应该扩展相等的大小写$a['1'] == $b['1']

您还应注意,您不必完全返回-11 - 您可以使用任何负数/正数。所以你的分拣机可以写成以下

usort(function($a, $b) { 
    if($a['1'] == $b['1']) {
        return $a['2'] - $b['2'];
    } 
    return $a['1'] - $b['1'];
}, 'sort');  

答案 1 :(得分:0)

我用过这个功能。它可能不是最有效的,但现在它可以工作。

            function comp($a, $b) {
                if ($a['1'] == $b['1']) {
                    return ($a['2'] < $b['2']) ? -1 : 1;
                }
                return strcmp($a['1'], $b['1']);
            }

            usort($arr, 'comp');