Dies ist eine typische Array-Struktur :
%Vor%Hier ist ein nicht eleganter Weg (oder "nicht so eleganter Weg"), das große Array auf ein einfaches Array zu reduzieren, das nur eine Spalte enthält:
%Vor% Das funktioniert, aber ist es möglich, dasselbe mit nur einer Anweisung zu tun? Vielleicht benutze ich wie array_reduce()
, aber ich sehe nicht wie.
Hier sind andere typische "Eleganz PHP Problem":
%Vor% Gibt es eine PHP-Alternative? Die Idee hier ist, das Schlüsselwort ( name
im Beispiel) als Array-Schlüssel und die anderen Elemente als übliche Felder zu verwenden, also das generische < starker> nicht-eleganter Algorithmus ist
Sie können array_column
verwenden, um alle Werte mit dem Schlüssel name
in ein anderes Array zu extrahieren
Sie könnten Ihr Array durch diese Funktion setzen:
%Vor%Es wird nur eine literale Folge von einfachen Werten Ihres multidimensionalen Arrays ergeben.
%Vor%dann, wie Sie die ursprüngliche Struktur kennen - können Sie dies wie benötigt analysieren. 4ex: jeder dritte Wert könnte der Schlüsselwert eines neuen assoziierten Arrays sein, der ein Array mit Arrays der ersten beiden Werte enthält .. oder wie gewünscht
array_column ist die erste logische Ankündigung, keine Überraschungen.
Je nachdem, wie normal Ihre Daten sind und wie oft diese Probleme auftreten, können Sie eine Klasse um Ihre Daten implementieren. Sie können den ArrayAccess verwenden, Iterator und Countable , um die Änderung vollständig transparent zu machen, und Sie könnten Hilfsmethoden implementieren, um die Komplexität des Abrufens von Daten zu verbergen.
Hier ist ein Beispiel, nur mit ArrayAccess:
%Vor%Mit dem obigen Code sollten Sie in der Lage sein, auf Ihre Daten zuzugreifen, so wie Sie es waren, aber Sie haben auch die Möglichkeit, zusätzliche Accessoren in einem netten Container zu definieren. Beachten Sie, dass Sie auch die Iterator-Schnittstelle implementieren müssen, um Ihre Daten überprüfen zu können.
Dies geht nicht auf das "Eleganz" -Problem der zugrundeliegenden Implementierung ein (die anderen Lösungen machen das gut), aber auf diese Weise wird die Komplexität komplett ausgeblendet.
Tags und Links php data-structures