echo $begrüßung;
Ich blicke aber auch nicht genau durch, was $a und $b machen. Wird da alles mit allem verglichen, taucht jeder Wert also einmal als $a, und später nochmal als $b auf?
Das hängt von dem von PHP verwendeten Suchalgorithmus ab und ist für deine Vergleichsfunktion nicht weiter relevant. Die hat nur die Aufgabe, durch eine entsprechende Rückgabe dem Aufrufer mitzuteilen ob a kleiner/größer/gleich b ist.
Du müsstest also zurückgeben:
$a = Array, $b = string: Wert für $a < $b
(zu lesen: Wenn $a ein Array und $b ein String ist, dann gib den Wert laut Doku zurück, der für $a kleiner als $b zurückgegeben werden soll.)
$b = Array, $a = string: Wert für $a > $b
$a = Array, $b = Array: Wenn $a vor $b stehen soll: Wert für $a < $b sonst Wert für $a > b
$a = string, $b = string: Vergleich beider Variablen. strcmp() bietet sich hier an.
Wenn die Werte innerhalb von Arrays auch noch sortiert werden sollen wäre eine weitere Runde, beispielsweise mit foreach, angebracht, die bei einem Array dieses zum Sortieren schickt.
echo "$verabschiedung $name";