Eines der Muster, auf das ich beim Entwickeln häufig stoße, versucht, einen Spalten- / Attributwert aus einer Sammlung von Objekten in einem Array zu sammeln. Zum Beispiel:
%Vor%Bin ich der Einzige, der darauf reinkommt? Und hat PHP eine Möglichkeit, dies in weniger Zeilen zu lösen? Ich habe gesucht, aber nichts gefunden.
Da ich ein MVC-Framework verwende, habe ich Zugriff auf eine BaseUtil-Klasse, die allgemeine Funktionen enthält, die nicht wirklich in bestimmte Klassen passen. Eine von einem Mitarbeiter vorgeschlagene Lösung ist:
%Vor%Dann kann ich einfach tun:
%Vor%Nicht zu schäbig. Hat noch jemand andere Ideen? Und bin ich verrückt oder scheint das ein Problem zu sein, das PHP schon vor langer Zeit gelöst haben sollte?
Sie können die Funktion array_map () für diesen Zweck verwenden:
%Vor%Sie können auch die Funktion create_function () für Lambda-Funktionen in Erwägung ziehen, wenn Sie nicht möchten Ich möchte keine getName () -Funktion im globalen Namespace erstellen.
In PHP 5.3 können Sie sogar Folgendes tun:
%Vor%Du kannst es leicht mit Ouzo-Leckereien
machen %Vor%oder mit Arrays (von Ouzo-Leckereien)
%Vor%Sie können sogar verschachtelte Felder von Methodenaufrufen oder Array-Zugriff usw. extrahieren:
%Vor%Besuche: Ссылка
Siehe auch funktionale Programmierung mit Ouzo (Ich kann keinen Link posten).
Ein anderer Ansatz besteht darin, "reiche" Array-Objekte zu verwenden, wie sie in anderen Sprachen gefunden werden.
zum Beispiel
%Vor%Eine der Schwächen von PHP ist, dass es nicht besonders ausdrucksstark ist.
Wo in Sprachen wie Ruby oder Perl Sie diese Daten wahrscheinlich mit einer einzigen Codezeile erhalten, benötigen Sie im Allgemeinen kleine Algorithmen wie die, die Sie gepostet haben, um die gewünschten Ergebnisse zu erzielen.
Ich würde bei dem bleiben, was Sie haben, aber hier ist eine andere Herangehensweise nur für den Teufel.
%Vor%Danke für die Eingabe Jungs. Ich nehme an, ich werde nur die Lösung meines Kollegen verwenden:
%Vor%Wenn Sie eine Magento-Sammlung laden und diese Sammlung dann erneut durchlaufen, können Sie die gewünschten Werte in ein Array einfügen, was unwirksam ist. Die geeignete Methode hierfür ist die getColumnValues () -Methode. Diese Methode gibt Ihnen ein Array von Werten, indem Sie den Spaltennamen angeben.
Hier ist der geeignete Weg, dies zu tun.
%Vor%Damit erhalten Sie ein Array mit allen von Ihnen ausgewählten Werten für customer_id.
Tags und Links php