Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Tablica jak usunąc unikaty
amii
post 9.12.2010, 13:14:45
Post #1





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Mam plik synonimy.txt w postaci:
wiodłoby się=powodziłoby się
towarów=produktów
towary=produkty
powinno mieć=będzie miało=mieć
posiadać=mieć

Co chcę zrobić - chcę zachować obecną strukturę pliku ale usunąć duplikaty. W przykładzie duplikatem jest np. mieć. A zatem rozbijając to na kroki algorytmiczne potrzebuje:
1. Zrobić tablicę, gdzie każdy wyraz z pliku jest osobnym elementem tablicy
2. Usunąć duplikaty z tej tablicy
3. Powrócić do starej struktury tablicy
4. Zapisać to z powrotem do pliku

Problem jest z pkt. 3 wymyśliłem coś takiego i dostaje komunikat :

Warning: implode() [function.implode]: Bad arguments. in /var/www/vhosts/strona.pl/httpdocs/synonim/test.php on line 31
  1. function export($table) { //dostarczamy tablice do obrobki
  2.  
  3. for($k=0; $k<count($table); $k++) {
  4. $pobranie1[$k] = explode('=', $table[$k].'='); //rozbijamy na pojedyncze rekordy
  5. $calosc = array_merge($pobranie1[$k]); //i tworzymy z nich jedna tablice
  6. }
  7.  
  8. $calosc = array_unique($calosc); //usuwamy duplikaty
  9. $calosc = implode('\n', $calosc);
  10. $calosc = implode('=', $calosc); //LINE 31
  11.  
  12.  
  13. $handle = fopen("synonimy.txt", 'w+'); //zapisujemy do pliku
  14. fwrite($handle, $calosc);
  15. fclose($handle);
  16. }



--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
erix
post 9.12.2010, 14:43:58
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ja bym to zrobił w mniej-więcej taki sposób:

  1. $occs = array();
  2.  
  3. $p = fopen(...);
  4.  
  5. $c = count($table);
  6. for($a=0;$a<$c;$a++){
  7.  
  8. $buff = explode('=', $table[$a]);
  9. if(isset($occs[$buff[1]])){
  10. continue;
  11. }
  12.  
  13. $occs[$buff[1]] = 1;
  14. fwrite(...); // implode('=', $buff);
  15.  
  16.  
  17. }


Resztę sobie uzupełnij. Choć mógłbyś w sumie to strumieniowo czytać, nie wiem po co całą tablicę do tego podrzucasz.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
amii
post 9.12.2010, 16:02:53
Post #3





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Jeszcze nie sprawdzałem ale nie za bardzo rozumiem.
$occs[$buff[1]] = 1; co to ma robić ? Bo z tego co widzę to warunek if(isset($occs[$buff[1]])) będzie zawsze spełniony


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
erix
post 9.12.2010, 22:29:29
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nadanie temu jakiejkolwiek wartości.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 2.07.2025 - 02:43