Vergleichen Array-Werte mit anderen Werten aus dem gleichen Array

8

Was ich versuche zu erreichen ist, dass es durch das Array läuft. Dann wird es aussehen, wenn die Elemente in dem Array an drei Punkten identisch sind: product_id, der Größenwert und der Farbwert. Ich möchte ein neues Array erstellen, in dem die Elemente aufgelistet sind. Das einzige, was ich nicht möchte, sind die duplizierten Werte. Ich möchte, dass die duplizierten Werte, wenn sie an diesen drei Punkten gleich sind, dass die Menge zusammen gezählt wird. Wie wenn ich 3 Artikel gleiche Produkt ID gleiche Größe und gleiche Farbe und beide der drei habe Ich bestellte 3 Artikel in meinem neuen Array das ist nur 1 Mal und die Menge wird 9. Also wird es keine doppelten Werte in meinem neuen Array.

Stromschleife

%Vor%

ergibt das folgende Array

%Vor%

Art von was ich suche ..

%Vor%

Lösung Beachten Sie, dass es Blade-PHP als Frontend ist.

Back-End

%Vor%

Frontend

%Vor%     
AddcitedToLearn 06.11.2015, 20:07
quelle

6 Antworten

8

Sie können Ihr Ziel erreichen, ohne verschachtelte Schleifen zu verwenden. Sie können die Hash-Funktion der Parameter product_id, size und color verwenden und diesen Wert als neuen Array-Schlüssel verwenden:

%Vor%     
max 18.11.2015, 13:55
quelle
2

Ich hoffe, das kann Ihnen helfen:

%Vor%     
mmta41 25.11.2015 09:24
quelle
0

Versuchen Sie es (ungetestet, aber die Logik sollte stimmen):

%Vor%

Bearbeiten : Entschuldigung, ich habe Ihren Beitrag nur noch einmal gelesen und festgestellt, dass Sie keine vollständige Lösung wünschen. Es tut uns leid. Aber ich hoffe, dass Ihnen das zeigen kann, dass Nested Loops der richtige Weg sind. Wie in den Kommentaren erwähnt, gibt es dafür in PHP (AFAIK) keine eingebaute Funktion.

    
Jonathan Lam 06.11.2015 20:29
quelle
0

Dies ist keine Lösung, sondern ein anderer Ansatz, mit dem Sie nach objektorientierter Programmierung denken können Es wird dir in deinen aktuellen und nächsten Problemen sehr helfen.

Nun haben Sie einen Geschäftsfall, der in Ihrer Business-Schicht aufgelöst werden muss Ich kann Ihnen helfen, wenn Sie möchten,

%Vor%

Jetzt können Sie problemlos 2 Products Object vergleichen, und das Aktualisieren von equals() wirkt sich später nicht auf Ihren Code aus

    
Halayem Anis 19.11.2015 13:50
quelle
0

Sie haben einige gute Antworten von anderen Benutzern.

Ich möchte dies jedoch für Google-Mitarbeiter oder andere Benutzer in der Planungsphase und für Ihr eigenes Wissen veröffentlichen.

Mit Ihrem Beispiel verwenden Sie einen Einkaufskorb. Sie sollten niemals doppelte Objekte im Array haben, Sie sollten eine Mengenmessung für das Objekt verwenden und vor dem Hinzufügen zu Ihrem Array überprüfen Sie das Array, wenn das entsprechende Objekt vorhanden ist, erhöhen Sie die Menge.

als Ihre aktuelle Art und Weise, wie Ihr Code das Array nachher ohne guten Grund verarbeitet, wenn ich 20 desselben Elements hinzufügen würde, würde Ihr aktuelles System ein Array von 20 haben, um jedes Mal, wenn ich den Korb öffnete, zu durchlaufen.

Diese andere Methode bietet Ihnen auch Unterstützung für Personen, die mehrere Mengen von Artikeln gleichzeitig hinzufügen können. Bearbeiten Sie auch die Mengen auf Ihrer Warenkorbseite

    
Martin Barker 24.11.2015 13:08
quelle
-1

Bitte beachten Sie die Annahmen unter dem Code

%Vor%

Annahmen:

  • 'Attribute' wird in assoziatives Array
  • konvertiert
  • Produkt-ID, Farbe & amp; Die Größenwerte sind nicht leer in jedem Element
Akshat Singhal 25.11.2015 05:49
quelle

Tags und Links