Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Tablica jak usunąc unikaty
Forum PHP.pl > Forum > Przedszkole
amii
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. }

erix
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.
amii
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
erix
Nadanie temu jakiejkolwiek wartości.
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.