2009-07-13 6 views
0

Wie würde ich die Sortierreihenfolge zwischen aufsteigend/absteigend in der folgenden Funktion ändern? Es wird lediglich ein mehrdimensionales Array nach einem ausgewählten Feld und dann nach Titel sortiert.Bestanden aufsteigende/absteigende Option zu 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'); 

Antwort

0

Es gibt keine Reverse-Option - man müsste eine neue Sortierfunktion erstellen, die die negative Ihrer Sortierfunktion zurückgibt.

Einfach, aber ineffizient:

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

Will, dass die Arbeit für alphabetische Sortierung obwohl? – robotmay

+4

Wie wäre es mit Funktion 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

ich meine Rückkehr ($ a> $ b) groß zu klein und für klein zu groß ($ a <$ b) – gautham

Verwandte Themen