Pracuję z jednowymiarową tablicą w PHP. Chciałbym wykryć obecność zduplikowanych wartości, a następnie policzyć liczbę zduplikowanych wartości i opublikować wyniki. Na przykład biorąc pod uwagę następującą tablicę:
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
Chciałbym wydrukować:
apple (2)
orange
pear (2)
banana
kiwi (3)
Jakieś rady, jak podejść do tego problemu?
Dzięki.
Mikrofon
źródło
array_unique($array, SORT_REGULAR)
wymusza na PHP normalne sprawdzanie elementów bez zmiany typu, ale jest to luźne porównanie. Tak więc różne wystąpienia jednej klasy o tej samej zawartości będą unikalne.źródło
return array_values(array_unique(array_diff_key($a, array_unique($a))));
Możesz spróbować przekształcić tę tablicę w tablicę asocjacyjną z owocami jako kluczami i liczbą wystąpień jako wartościami. Trochę rozwlekły, ale wygląda na to:
źródło
array_count_values
Aby się pozbyć użyj
array_unique()
. Aby wykryć, czy mają jakieś zastosowaniecount(array_unique())
i porównać zcount($array)
.źródło
Wrzuć je do
map
(pseudokod)źródło
Może coś takiego (nieprzetestowany kod, ale powinien dać ci pomysł)?
Następnie otrzymasz nową tablicę z wartościami jako kluczami, a ich wartością jest liczba przypadków, w których istniały one w oryginalnej tablicy.
źródło
array_count_values
źródło
Nie znalazłem odpowiedzi, której szukałem, więc napisałem tę funkcję. Spowoduje to utworzenie tablicy, która będzie zawierała tylko duplikaty między dwiema tablicami, ale nie wypisze liczby duplikatów elementu, więc nie jest to bezpośrednia odpowiedź na pytanie, ale mam nadzieję, że pomoże to komuś w mojej sytuacji.
Wyjścia:
źródło
Prosta metoda:
źródło