Napisz własną f-kcję porównującą, a potem skorzystaj z tego:
usort($tablica, "nazwa_Twojej-f-kcji_sortującej");
Czyli np. tak:
function sort_hun($array)
{
usort($array, "huncmp");
return($array);
}
function intcmp($a,$b,$ALP)
{
if ($a==$b) return 0;
$ALPL = strlen($ALP);
$ap = $bp = -1;
$i = 0;
while (($i < $ALPL) and (($ap == -1) or ($bp == -1)))
{
if ($ALP[$i] == $a) $ap = $i;
if ($ALP[$i] == $b) $bp = $i;
$i++;
}
return($ap < $bp) ? -1 :1;
}
function huncmp($astring, $bstring)
{
$ALP = "AaĄąBbCcĆćDdEeĘęFfGgHhIiJjKkLlŁłMmNnOoÓóPpQqRrSsŚśTtUuVvWwXxYyZzŹźŻż";
//jeśli równe
if ($astring == $bstring) return 0;
//wykonuj na kazdym elemencie
for ($i = 0; $i < strlen($astring) && $i < strlen($bstring) && $astring[$i] == $bstring[$i]; $i++);
//jeśli takie same lecz jedna krótsza
if ($astring[$i] == $bstring[$i]) return (strlen($astring) > $bstring) ? -1 : 1;
//pierwszy różny znak
return(intcmp($astring[$i], $bstring[$i], $ALP));
}
$ize = array("Ćul", "Ączek", "Bączek", "Śluzówka", "Zarazka", "Lolesław", "Łolesław");
$ize = sort_hun($ize);
print_r($ize);
echo "\nWynik: " . implode(", ", $ize) . ".";
Powyższa f-kcja pochodzi z komentarza na stronie php.net i została przeze mnie lekko zmodyf..