Ich arbeite mit einem eindimensionalen Array in PHP. Ich möchte das Vorhandensein doppelter Werte erkennen, dann die Anzahl doppelter Werte zählen und die Ergebnisse ausgeben. Zum Beispiel bei folgendem Array:
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
Ich möchte drucken:
apple (2)
orange
pear (2)
banana
kiwi (3)
Irgendwelche Ratschläge, wie man dieses Problem angeht?
Vielen Dank.
Mike
quelle
array_unique($array, SORT_REGULAR)
erzwingt PHP, um Elemente normal zu überprüfen, ohne den Typ zu ändern, aber es ist ein loser Vergleich. So werden verschiedene Instanzen einer Klasse mit demselben Inhalt eindeutig.quelle
return array_values(array_unique(array_diff_key($a, array_unique($a))));
Um loszuwerden
array_unique()
. Um festzustellen, ob es von Nutzen ist,count(array_unique())
und um es zu vergleichencount($array)
.quelle
Sie können versuchen, dieses Array in ein assoziatives Array mit den Früchten als Schlüssel und der Anzahl der Vorkommen als Werte umzuwandeln. Etwas langatmig, aber es sieht aus wie:
quelle
array_count_values
Füllen Sie sie in einen
map
(Pseudocode)quelle
Vielleicht so etwas (ungetesteter Code, sollte Ihnen aber eine Idee geben)?
Dann erhalten Sie ein neues Array mit den Werten als Schlüssel und deren Wert gibt an, wie oft sie im ursprünglichen Array vorhanden waren.
quelle
array_count_values
quelle
Ich habe die gesuchte Antwort nicht gefunden und diese Funktion geschrieben. Dadurch wird ein Array erstellt, das nur die Duplikate zwischen den beiden Arrays enthält, aber nicht so oft druckt, wie ein Element dupliziert wird. Daher wird die Frage nicht direkt beantwortet, aber ich hoffe, dass es jemandem in meiner Situation hilft.
Ausgänge:
quelle
Eine einfache Methode:
quelle