2009-07-13 3 views
0

Как бы переключить порядок сортировки между восходящим/нисходящим в следующей функции? Все, что он делает, - это порядок многомерного массива по выбранному полю, а затем по названию.Передача по возрастанию/убыванию параметра uasort()?

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

ответ

0

Нет обратной опции - вам нужно будет создать новую функцию сортировки, которая возвращает отрицательный результат вашей функции сортировки.

Простой, но неэффективна:

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

Будет ли это работать для алфавитной сортировки, хотя? – robotmay

+4

Как насчет Функция rsort ($ a, $ b) {return sort ($ b, $ a); } – grantwparks

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

i означает return ($ a> $ b) от большого до малого и от малого до большого ($ a <$ b) – gautham