Sammeln von Spaltenwerten in ein Array

8

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?

    
Justin Valentini 03.11.2009, 15:54
quelle

6 Antworten

10

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%     
Patrick Allaert 04.11.2009, 12:49
quelle
3

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).

    
woru 07.01.2015 15:44
quelle
1

Ein anderer Ansatz besteht darin, "reiche" Array-Objekte zu verwenden, wie sie in anderen Sprachen gefunden werden.

zum Beispiel

%Vor%     
user187291 03.11.2009 16:10
quelle
0

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%     
Peter Bailey 03.11.2009 16:11
quelle
0

Danke für die Eingabe Jungs. Ich nehme an, ich werde nur die Lösung meines Kollegen verwenden:

%Vor%     
Justin Valentini 03.11.2009 18:45
quelle
0

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.

    
zuzuleinen 19.07.2013 08:44
quelle

Tags und Links

yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '353592',
    'url' => 'collecting-column-values-into-an-array',
];

$_SESSION = [
    '__flash' => [],
];