Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Liczenie ilości wystąpień każdej cyfry
Forum PHP.pl > Forum > Przedszkole
thomson89
Witam!

Mam tablicę:

1 | 23; 45; 78; 19; 29
2 | 14; 58; 19; 28; 17
3 | 28; 73; 91; 51; 18

Chciałbym teraz policzyć ile razy dana cyfra wystąpiła w danym zbiorze.

Proszę o pomoc!

greycoffey
  1. <?php
  2. $tablica = array( array(23,45,78,19,29), array(14,58,19,28,17), array(28,73,91,51,18));
  3.  
  4. foreach($tablica as $val)
  5. {
  6. foreach($val as $value)
  7. {
  8. ++$zlicz[$value];
  9. }
  10. }
  11.  
  12. foreach($zlicz as $key=>$value)
  13. {
  14. echo "$key: $value razy<br/>";
  15. }
  16. ?>
Valdi_B
Może czepiam się szczegółów, ale poprzedni przykład zlicza liczby, a Ty chcesz zliczać cyfry (przynajmniej tak napisałeś).
Przy okazji chciałem pokazać jak obyć się bez własnych pętli.
Proponuję coś takiego:
  1. <?php
  2. // Dane źródłowe
  3. $tablica = array( array(23,45,78,19,29),
  4. array(14,58,19,28,17), array(28,73,91,51,18));
  5.  
  6. // Kumuluj znaki w $tt (callback)
  7. function join_chr($value, $key) {
  8. global $tt; // tu kumulujemy znaki
  9. $tt .= $value;
  10. }
  11.  
  12. // Wydruk klucz / wartość (callback)
  13. function prt_chr($item, $key) {
  14. echo chr($key) . " => $item<br />";
  15. }
  16.  
  17. // Kumuluj znaki z $tablica
  18. array_walk_recursive($tablica, 'join_chr');
  19. echo "tt: $tt<br />"; // Produkt połąćzenia
  20.  
  21. $lc = count_chars($tt, 1); // zlicz znaki
  22. echo "Wystąpienia cyfr:<br />";
  23. array_walk($lc, 'prt_chr');
  24. ?>
Jest to zarazem przykład, że:
- nie musisz robić własnej pętli "chodzącej" po tablicy, załatwia to array_walk,
- zliczanie znaków też możesz załatwić dedykowaną funkcją.

Uwaga: count_chars daje w wyniku tablicę, w której kluczami są kody znaków, dlatego potem przy wydruku trzeba je "przerobić" na znaki (chr(...)).

Oczywiście - nic za darmo, trzeba dopisać funkcje callback.
Per saldo - chyba się opłaca.
"Właściwy" program jest króciutki. Żadnych pętli, a wszystkie 3 operacje:
- skumulowanie znaków,
- zliczenie częstości,
- wydruk wyniku
wykonujesz pojedynczymi instrukcjami.
Fifi209
Jak wy kombinujecie.

array_count_values
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.