2008-09-22 4 views
7

Ich versuche, eine Funktion zu schreiben, die alle (String-) Member/Variablen in einem Objekt formatiert, zum Beispiel mit einer Callback-Funktion. Die Variablennamen sind mir unbekannt, daher muss es mit Objekten aller Klassen arbeiten.PHP: array_map auf Objekt?

Wie kann ich etwas Ähnliches wie array_map oder array_walk mit Objekten erreichen?

Antwort

9

Verwenden Sie get_object_vars(), um ein assoziatives Array der Elemente zu erhalten, und verwenden Sie die Funktionen, die Sie erwähnten.

BTW, Sie können auch eine foreach auf ein Objekt wie Sie auf einem Array, die manchmal auch nützlich ist.

+0

Danke, der foreach Ansatz scheint in meinem Fall am besten. –

+0

Beachten Sie, dass Sie im seltenen Fall, wenn Sie ein'ArrayObject' verwenden, etwas wie '$ obj-> exchangeArray (array_map ('func', $ obj-> getArrayCopy()));' –

1

Sie können get_object_vars() verwenden, aber wenn Sie mehr Kontrolle benötigen, versuchen Sie es mit reflection. Es ist langsamer als get_object_vars() (oder get_class_methods() für diese Angelegenheit), aber es ist viel mächtiger.

+0

das ist wirklich coole Funktionalität von PHP, über die ich nichts wusste! Ich bin mir nicht ganz sicher, wie ich es tatsächlich benutzen würde, aber das ist immer noch cool! – nickf