Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Usuwanie duplikatów
djdahu
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 1.07.2015

Ostrzeżenie: (0%)
-----


Witam.

Mam plik log.txt zawierający logi urządzenia w postaci:

(...)
||24.06||201||14||1||
||24.06||201||15||1||
||25.06||201||16||2||
||27.06||201||17||2||
||27.06||201||18||4||
||27.06||201||19||3||
||28.06||201||20||0||
||29.06||201||21||0||
||29.06||201||22||0||
||29.06||201||23||1||
||30.06||201||00||0||
||30.06||201||01||0||
(...)

Pierwsza kolumna to wartości oznaczajace dni miesiąca, w których urządzenie wykonało daną akcję.
Zdaża się, że czasem urządzenie wykonuje akcję kilka razy w ciągu jednego dnia, a w innym dniu nie wykonuje jej wcale.
Muszę wyświetlić na stronie wszystkie dni, w których urządzenie zadziałało - bez względu na to czy raz, czy więcej razy.
Efekt, który chciałbym osiągnąć do powyższych przykładowych wartości to:

24.06
25.06
27.06
28.06
29.06
30.06

Oczywiście wiem o istnieniu funkcji pozwalających na pocięcie linii tak, by wyświetliło tylko potrzebną kolumnę danych i wiem o funkcji usuwającej duplikaty, ale walczę z tym od dłuższej "chwili" i nie mogę zlepić z tego w poprawnie działający kod.

Z góry dzięki za pomoc:)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tomxx
post
Post #2





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. # Otwieramy plik
  4. $fp = fopen("logi.txt", 'r');
  5.  
  6. # Sprawdzamy rozmiar pliku
  7. $rozmiar = filesize("logi.txt");
  8.  
  9. # Odczytujemy treść pliku
  10. $logi = fread( $fp, $rozmiar );
  11.  
  12. # Tworzymy tablicę z logami (jedna komórka - jedno kliknięcie)
  13. $logi = explode("\n", $logi)
  14.  
  15. # Każdy element tablicy dzielimy na komórki z poszczególnymi danymi
  16. foreach($logi as &$element)
  17. $element = explode("||", $element);
  18.  
  19. # Definiujemy funkcję array_column
  20. if(!function_exists("array_column"))
  21. {
  22.  
  23. function array_column($array,$column_name)
  24. {
  25.  
  26. return array_map(function($element) use($column_name){return $element[$column_name];}, $array);
  27.  
  28. }
  29.  
  30. }
  31.  
  32. # Pobieramy kolumnę z datą do jednej tablicy
  33. $daty = array_column($logi, 0);
  34.  
  35. # Usuwamy duplikaty
  36. $daty = array_unique($daty);
  37.  
  38. # Otrzymujemy gotową tablicę:
  39. print_r($daty);
  40.  
  41. ?>
Nie wiem, w czym tu jest problem...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 13:39