Benutzerdefinierte Sortierung (Beispiel 1)

Eine spezielle Sortierreihenfolge vorgeben

Weitere Beispiele

Beispiel ausführen
PHP ist ja von Haus aus bereits reichlich mit Sortierfunktionen ausgestattet. Hier mal etwas spezielles. Das Array $a soll anhand des Arrays $map sortiert werden um eine mehr oder weniger willkürliche Reihenfolge der Anfangsbuchstaben vorgeben zu können.
<?php

function my_cmp($a,$b)
{
    
/* Dieses Array soll zur Sortierung verwandt werden */

    
$map = array(
     
'd',
     
'b',
     
'c',
     
'a',
    );
    
    
// Werte für $order
    // -1 => unbekannte an den Anfang stellen
    // 1 => unbekannte an das Ende stellen
    
$order = -1;

    
$a2use preg_replace('/[_0-9]*$/','',$a);
    
$b2use preg_replace('/[_0-9]*$/','',$b);

    
$na array_search($a2use$map);
    
$nb array_search($b2use$map);

    
// wenn nicht im "Ordnungsarray" an das Ende

    
if ($na === false && $nb === false) {
        return 
strcasecmp($a$b);
    }


    if (
$na === false) {
        return 
$order;
    }

    if (
$nb === false) {
        return -
$order;
    }

    if (
$na == $nb) {
        return 
strcasecmp($a$b);
       }
    return (
$na $nb) ? -1;
}



$a = array(
 
'd_2',
 
'c_1',
 
'd_2',
 
'd_2',
 
'd_1',
 
'a_1',
 
'd_3_2',
 
'A',
 
'X',
 
'a',
 
'b_2',
 
'c_2',
 
'd_3_1',
 
'b_1',
);



usort($a,'my_cmp');

echo 
join('<br>'$a);
?>

Benutzte Funktionen


Hinweise zum DatenschutzImpressum © 2005-2008 S. Eickhoff