Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Porownanie plikow/tablic
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam

Mam sobie dwa pliki , jeden wyglada mniej wiecej tak :

Cytat
spam ../data/inmail.1
ham ../data/inmail.2
spam ../data/inmail.3
spam ../data/inmail.4
spam ../data/inmail.5
spam ../data/inmail.6
spam ../data/inmail.7
spam ../data/inmail.8
spam ../data/inmail.9
ham ../data/inmail.10
spam ../data/inmail.11
spam ../data/inmail.12
spam ../data/inmail.13
spam ../data/inmail.14
spam ../data/inmail.15


Drugi tak :

Cytat
inmail.10
inmail.10002
inmail.10004
inmail.10011
inmail.10012
inmail.10013
inmail.10015
inmail.10018
inmail.10019
inmail.1002
inmail.10020
inmail.10026
inmail.10027
inmail.10028
inmail.10030
inmail.10031


Pierwszy z nich zawiera ok 75tys wierszy, drugi zas kolo 15tys.
inmail.xxx to nazwy pewnych plikow.

mniejszy zbior to wyciagniete pewne nazwy z wiekszego ale jak widac bez przedrostka 'spam' lub 'ham', no i teraz zadanie polega na tym zeby porownac ze soba te pliki i dopisac do tego mniejszego przedrostki, nie musza one byc przed nazwa, moga byc po, wazne zeby stworzyc taki indeks ktory bedzie zawieral zarowno nazwy inmail.xxx jak i przedrostki 'ham' lub 'spam'

Jak narazie zrobilem sobie tylko taka funkcje ktora wrzuca wszystkie nazwy z plikow do tablicy :

  1. //pobiera nazwy z pliku i wrzuca do tablicy
  2. public function getFilenameArray($filename) {
  3. $array = explode("\n", file_get_contents($filename));
  4. return $array;
  5. }


No i teraz nie wiem , czy porownywac dwie tablice powstale z tych plikow , czy sa jakies lepsze sposoby ? no i jak najlepiej wyciagnac przedrostek 'spam' lub 'ham' i przepisac je do tej krotszej listy, tak aby nazwy plikow i przedrostki byly oczywiscie takie same jak w tym wiekszym pliku (liscie)
Fifi209
Funkcję, którą "zrobiłeś" możesz już usunąć.

file - poczytaj jak działa, potem porozmawiamy o dalszych problemach.
piotrooo89
file, explode, foreach, if powinno Ci spokojnie wystarczyć. sklej w całość.
Wolfie
fifi209 z tego co widze to moja funkcja robi to samo co file (przynajmniej w przypadku tych plikow ktore mam smile.gif), a tak apropos dlaczego zrobiles dales w cudzyslowach ? winksmiley.jpg
bobo168
Po co tworzyć funkcje które są wbudowane w php? Tracisz swój czas i przede wszystkim zmniejszasz w mniejszym lub większym stopniu wydajność skryptu no i bezpieczeństwo...
Wolfie
Zrobilem cos takiego :

  1. //porownuje zawartosc indeksow plikow
  2. public function makeIndex($filepath_a, $filepath_b) {
  3. $big_array = file($filepath_a);
  4. $small_array = file($filepath_b);
  5. foreach($small_array as $val) {
  6. for($i=0; $i<count($big_array); $i++){
  7. if(strstr($big_array[$i], $val)) {
  8. $array[] = $big_array[$i];
  9. }
  10. }
  11. }
  12. return $array;
  13. }


Tylko teraz pytanie,
Czy istnieje mozliwosc zeby jakos monitoraowac na jakim etapie sa obliczenia ?
Bo jak odpalam skrypt to mi mieli strasznie dlugo, w koncu to 75tys x 15tys operacji winksmiley.jpg co w sumie daje 1154740309
Ustawilem set_time_limit na 400 ale to i tak za krotko......wywala komunikat ze execution time exceeded,
da sie to jakos monitorowac ?
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.