PHP zählt Elemente in einem mehrdimensionalen Array

8

Wie Sie aus dem folgenden Array sehen können, gibt es drei Elemente, die am 18. November erscheinen, und zwei weitere, die am 22. November erscheinen. Kann mir jemand sagen, wie ich die Zählungen von 3 und 2 von diesem Array abrufen kann ? Grundsätzlich möchte ich mit einem Ergebnis wie folgt enden:

18. November 2011 = 3 Artikel

22. November 2011 = 2 Artikel

Natürlich variieren die Daten und die Anzahl der verschiedenen Daten jedes Mal. Hier ist das Array:

%Vor%     
DanielAttard 27.11.2011, 07:48
quelle

9 Antworten

7

Funktioniert das für das, was Sie brauchen?

%Vor%

Drucke:

%Vor%

Hinweis: Dies setzt voraus, dass Sie beim Strukturieren Ihres Arrays immer Daten erhalten und dass jedes Datum gleich formatiert wird. Wenn Sie nicht davon ausgehen können, dass jedes Datum formatiert wird, wäre dies eine einfache Konvertierung mit der Funktion date (). Wenn Sie nicht davon ausgehen können, dass Sie genau so strukturierte Daten erhalten, wäre der beste Weg, dies zu tun, wahrscheinlich eine rekursive Funktion.

    
Godwin 27.11.2011, 08:02
quelle
20
ezawadzki 07.02.2014 10:22
quelle
3

Die geposteten Antworten sind für Ihr repräsentatives Beispiel korrekt, aber ich möchte eine andere Lösung hinzufügen, die unabhängig davon funktioniert, wie viele verschachtelte Arrays Sie erstellen. Es wiederholt das Array rekursiv und zählt alle Elemente in allen Sub-Arrays.

gibt die Gesamtzahl der Elemente im Array zurück. Im zweiten Argument können Sie ein Array angeben Referenz, die die Anzahl pro eindeutiger Schlüssel in den (verschachtelten) Array (s) enthalten wird.

Beispiel:

%Vor%

ergibt:

%Vor%     
Kaii 27.11.2011 08:31
quelle
2

Angenommen, Ihr Array-Beispiel ist repräsentativ:

%Vor%

Gibt die Anzahl der Arrays in jedem der Haupt-Array-Elemente an. In Ihrem Beispiel wäre das auch die Anzahl der Einträge für jedes Datum.

Dies überprüft natürlich nicht die Daten selbst

    
Sylverdrag 27.11.2011 08:03
quelle
1

Sie können array_walk_recursive() verwenden, um auf all der Blattknoten in einer Array-Struktur.

Etwas Ähnliches sollte für Sie funktionieren:

%Vor%

Ausgaben:

%Vor%     
hafichuk 27.11.2011 08:26
quelle
1

Für Ihre spezifische $array -Struktur denke ich, dass die einfachste Methode die Verwendung von foreach ist und dann den Datumswert und die count() aus jedem Wert herausholt:

%Vor%

Mit Ihrem $array erhalten Sie:

%Vor%

Wenn Sie nach einem allgemeineren Weg suchen, können Sie RecursiveArrayIterator und RecursiveIteratorIterator verwenden, um über alle Blattschlüssel- / value-Elemente zu traversieren und dann einfach die Schlüssel zu zählen:

%Vor%

Hoffe, das hilft.

    
hakre 28.11.2011 11:58
quelle
0

Hier ist meine rekursive Variante:

%Vor%

Dies wird zurückkehren:

%Vor%     
mintobit 27.11.2011 09:33
quelle
0
%Vor%     
itsazzad 10.12.2015 17:32
quelle
0

Wenn Sie die Elemente eindimensional und zweidimensional zählen möchten, können Sie versuchen:

%Vor%     
Ismael Renteria 25.10.2017 03:30
quelle