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