Tach!
Das heißt, wenn $Value ein Array ist, soll er nur $Value['value'] weitergeben und damit die Funktion neustarten, aber bitteschön $Value['attribute'] in Ruhe lassen!
Was anderes als eine Fallunterscheidung wird dir nicht bleiben, also if oder switch.
Wie kriege ich das hin? $Key != "attributes" funktioniert ja nicht, weil $Key ja gar nicht der Key von den einzelnen Teilen innerhalb des $Value-Arrays ist.
Du könntest deine Logik ändern. If attributes mach dies, else wenn value mach jenes, else mach sonstwas.
dedlfix.