将升序/降序选项传递给uasort()?

时间:2009-07-13 11:05:42

标签: php arrays sorting

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

$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');

2 个答案:

答案 0 :(得分:0)

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

简单但效率低下:

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

答案 1 :(得分:0)

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