[PHP] Jak policzyć ile razy powtarzają się wszystkie elementy w tablicy lub wszystkie dane w pliku?
Chcesz policzyć ile razy powtarzają się wszystkie elementy tablicy, np. imiona - ile razy w tablicy występuje imię Ala, Janek, Michał itp. Podobnie w pliku - jeżeli dane zapisane są w osobnych linijkach, chcesz policzyć ile razy się powtarzają aby wykryć np. pojawiające się najczęściej.
Zliczanie ile razy pojawił się każdy z elementów pliku lub tablicy jest bardzo pomocne przy szacowaniu ilości wystąpień elementów. Gdy zapisujesz do pliku numery IP, z jakich łączą się użytkownicy, łatwo możesz policzyć, który numer pojawia się najczęściej.
Podobnie gdy zapisujesz np. wyszukiwane przez użytkowników wyrazy, możesz łatwo sprawdzić, jakie pytania wpisują najczęściej. Zastosowań takiego zliczania jest bardzo wiele. Zobacz jak w łatwy sposób poradzić sobie ze zliczaniem elementów w tablicy i w pliku.
<?
$tab[]="Ala";
$tab[]="Janek";
$tab[]="Michał";
$tab[]="Ala";
$tab[]="Janek";
$tab[]="Ala";
$tab[]="Ala";
$tab[]="Michał";
$tab[]="Janek";
foreach ($tab as $linia) {
$ile["$linia"]++;
}
while (list($indeks, $wartosc) = each ($ile)) {
echo "$indeks - $wartosc<br>";
}
?>
W wyniku uruchomienia skryptu otrzymasz następujący wnik:
Ala - 4
Janek - 3
Michał - 2
Aby policzyć ile razy pojawia się wybrany element tablicy należy skorzystać z dwóch pętli. Pierwsza foreach() odczytuje wszystkie elementy z tablicy $tab[] i tworzy nową tablicę asocjacyjną $ile[], której indeksem jest nazwa elementu z tablicy $tab[], a wartością jest licznik, zwiększany przy każdym wystąpieniu tego elementu.
Druga pętla while() pobiera dla każdego elementu tablicy asocjacyjnej $ile[] jej indeks i wartość, czyli nazwę i licznik wystąpień tej wartości. W pętli wypisywane są na ekran wartości i indeksy.
Jeżeli chcesz przetwarzać zawartość pliku, zamiast inicjować tablicę, stwórz ją bezpośrednio z pliku:
<?
$tab=file("dopoliczenia.txt");
foreach ($tab as $linia) {
$ile["$linia"]++;
}
while (list($indeks, $wartosc) = each ($ile)) {
echo "$indeks - $wartosc<br>";
}
?>
Można oczywiście odwrócić wartość i indeks miejscami, aby pierwsza pojawiała się ilość wystąpień elementu. Ułatwi do np. sortowanie wyników w edytorze lub w dalszej części skryptu PHP.