<?php
function my_cmp($a,$b)
{
global $map;
// 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',
);
/* Dieses Array soll zur Sortierung verwandt werden */
$map = array(
'd',
'b',
'c',
'a',
);
usort($a,'my_cmp');
echo join('<br>', $a);
?>
Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.