Enrico: foreach: Abfrage des nächsten Elements und continue

Beitrag lesen

Hallo,

ich habe folgendes, zu Testzwecken fest vorgegebenes, Array:

  
$EmpfaengerArray = array ("Anrede"       => "Herrn",  
                          "Vorname"      => "Enrico",  
                          "Nachname"     => "Mustermann",  
                          "Strasse"      => "Mustermann-Weg",  
                          "Hausnummer"   => "53",  
                          "Postleitzahl" => "12345",  
                          "Ort"          => "Musterstadt");  

Nun möchte ich daraus einen Empfängerblock erzeugen in der Form

Herrn
Enrico Mustermann
Mustermann-Weg 53
12345 Musterstadt

Dies möchte ich über folgenden Code umsetzen:

  
$Empfaenger = "";  
  
foreach ($EmpfaengerArray as $Schluessel => $Wert)  
{  
   $Empfaenger .= $Wert;  
  
   if ($Schluessel == "Anrede")  
      $Empfaenger .= "\n";  
   else  
      if ($Schluessel == "Vorname")  
      {  
         $Nachname = Weiter ($EmpfaengerArray, "Vorname");  
         $Empfaenger .= $Nachname .= "\n";  
  
         continue;  
      }  
      else  
         if ($Schluessel == "Strasse")  
         {  
            $Nachname = Weiter ($EmpfaengerArray, "Strasse");  
            $Empfaenger .= $Hausnummer .= "\n";  
  
            continue;  
         }  
}  

Die Funktion "Weiter" soll mir nun den nächsten Variableninhalt, ausgehend vom aktuell ermittelten Variableninhalt liefern:

  
function Weiter ($arr, $key)  
{  
   $keys = array_keys($arr);  
   $keyIndexes = array_flip($keys);  
  
   $return = array();  
  
   if (isset($keys[$keyIndexes[$key]+1]))  
      $return[] = $keys[$keyIndexes[$key]+1];  
   else  
      $return[] = $keys[0];  
  
   return $return;  
}  

In meinem derzeitigen Ansatz sind "Nachname" und "Hausnummer" aber undefiniert, d.h. die Abfrage des Rückgabewertes funktioniert nicht.

Gebe ich nun hinter die beiden Variablen jeweils "[0]" oder "[1]" an, dann bekomme ich die Meldung "Undefined offset: 0".

Wie komme ich richtig an den Wert ran?

Vielen Dank und Gruß,
Enrico