echo $begrüßung;
Hättest Du evtl. ein kurzes Code-Beispiel für mich ?
Nein, aber ich habe noch einen einfacheren Lösungweg gefunden. array_filter() ist für solche Fälle vorgesehen. Du schreibst dir eine Callback-Funktion, die true (Wert erhalten) oder false (Wert löschen) zurückgibt. Diese Funktion muss sich nur merken, ob ein bestimmter Wert bereits vorkam oder nicht. Dies kann sie in einem globalen Array (einfacher zu realisieren) tun oder in einem statischen lokalen (eleganter).
Bei dem statischen lokalen Array ist zu beachten: Die Callback-Funktion wird immer wieder neu aufgerufen. Variablen bleiben zwischen den Aufrufen nur dann erhalten, wenn sie als static deklariert werden (static $var = array();). Sollen mehrere Arrays gefiltert werden, muss noch ein Mechanismus zum Löschen der zwischengespeicherten Werte eingefügt werden. Dazu wird die Callback-Funktion entgegen der für array_filter() notwendigen Deklaration eines Parameter noch ein zweiter hinzugefügt, dessen Defaultwert im Verlauf der Funktion keine Aktion veranlasst. array_filter() bedient nur den ersten Parameter, so dass der zweite den Defautwert behält. Ruft man callback() zu Fuß auf und setzt den zweiten Parameter, kann man das als Signal zum Löschen des Zwischenspeichers nehmen. Hierfür gibts allerdings ein kleines Codebeispiel:
function callback($value, $reset = false) {
static $cache = array();
// Cache löschen
if ($reset) {
$cache = array();
return;
}
// array_filter()-Teil
if (in_array($value->..., $cache)
return false;
$cache[] = $value->...;
return true;
}
Der bessere Weg ist aber, wie Sven erwähnte, die Filterung der Datenquelle zu überlassen.
echo "$verabschiedung $name";