【问题标题】:Pass Ascending/Descending option to uasort()?将升序/降序选项传递给 uasort()?
【发布时间】:2009-07-13 11:05:41
【问题描述】:

如何在以下函数中在升序/降序之间切换排序顺序?它所做的只是按所选字段排序多维数组,然后按标题。

$sortby = 'date';
$orderby = 'asc';

function sort($a, $b)
{
    $retval = strnatcmp($a[$sortby], $b[$sortby]);
    if(!$retval) return strnatcmp($a['title'], $b['title']);
    return $retval;
}

uasort($jobs, 'sort');

【问题讨论】:

    标签: php arrays sorting


    【解决方案1】:

    没有反向选项 - 您必须创建一个新的排序函数来返回排序函数的负数。

    简单但低效:

    function rsort($a, $b)
    {
        return -1 * sort($a, $b);
    }
    

    【讨论】:

    • 函数 rsort($a, $b) { return sort($b, $a); 怎么样? }
    【解决方案2】:
    <?php
    // Comparison function
    function cmp($a, $b) {
        if ($a == $b) {
            return 0;
        }
        return ($a>$b) ? -1 : 1;
    }
    
    // Array to be sorted
    $array = array('a' => 5.2, 'b' => 2.2, 'c' => 1.2, 'd' => 1.2,'f' => 5.5, 'g' => 1.2, 'h' => 6.2);
    print_r($array);
    
    // Sort and print the resulting array
    uasort($array, 'cmp');
    print_r($array);
    ?>
    

    【讨论】:

    • 我的意思是返回 ($a>$b) 从大到小,从小到大 ($a
    猜你喜欢
    • 2016-10-03
    • 2012-12-02
    • 2011-05-22
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2014-04-08
    • 2016-05-14
    相关资源
    最近更新 更多