Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wykrywanie zdublowanych rekordów w pliku xml
pepro
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 20.09.2012

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


Witajcie.
Mój szef zadał mi pracę domową. Jest plik dane.xml o strukturze
  1. <dane>
  2. <rec>
  3. <name>nazwa</name>
  4. <address>adres</address>
  5. <city>miasto</city>
  6. <tel>600700800</tel>
  7. </rec>
  8. </dane>

Tych wpisów jest około 12000. wiele pól 'tel' się powtarza więc w jakiś magiczny sposób chciałbym wykryć zdublowane wpisy.
W efekcie chciałbym aby wylistowany był tylko jeden a nie kilka czy kilkanaście. Potem wygenerować zmodyfikowany plik dane.xml. Niby wszystko wiem tylko problemem pozostaje wyfiltrowanie i pozbycie się zdublowanych telefonów.

Mógłby mnie ktoś naprowadzić czego szukać lub podać jakiś przykład bym mógł sobie jakoś dojść do tego?

Serdeczne dzięki z góry za podpowiedzi.
Powód edycji: [webdice]: Błąd ortograficzny.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adbacz
post
Post #2





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

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


12000 wpisów w XML to troche dużo wg mnie.

Ale jeśli nie brać pod uwagę tego ile ich jest, to wystarczy parsowanie to obiektu lub tablicy, co Ci bardziej pasuje. Później dwie pętle i tyle:

  1. // Przechowujemy przefiltrowane dane
  2. $newData = array();
  3.  
  4. // Przechowuje oryginalną tablicę z elementami XML
  5. $currentData = array();
  6.  
  7. for($i=0, $count=count($currentData); $i<$count; $i++)
  8. {
  9. $isset = false;
  10.  
  11. for($j=0, $countj=count($newData); $j<$countj; $j++)
  12. {
  13. if($currentData[$i]['tel'] == $newData[$j]['tel'])
  14. {
  15. $isset = true;
  16. break;
  17. }
  18. }
  19.  
  20. if($isset === false)
  21. {
  22. $newData[] = $currentData[$i];
  23. }
  24. }


Takie coś powinno załatwić sprawę, ale nie wiem jak będzie z wydajnością. Jeśli to ma być tylko jednorazowe filtrowanie to ok, ale jeśli to ma działać częściej to warto pomyśleć nad innym wyjściem.
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: 15.10.2025 - 05:25