Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyszukanie tego samego elementu z tablicy
Forum PHP.pl > Forum > Przedszkole
botnaizi
Witam,

Muszę napisać prosty skrypt który znajdzie te same elementy w tablicy i wyrzuci je tak aby pozostał tylko 1 z taką samą wartością np.

mam zmienną
$tablica = array(1,1,3,5,6,6,8,9);
wszystkie podobne są obok siebie ale niestety jest ich około 300tys więc robota ręczna odpada ;].
napisałem coś takiego nie wiem czy będzie ok, bo mogło mi się z Pascalem coś pomylić.
Nie wiem czy zadziała np znajdzie 2 podobne i może jedną przeskoczy a i tak zostaną 2 rekordy takie same.
  1. <?
  2. $tablica = array(1,1,3,5,6,6,8,9);
  3. $a=0;
  4. $i=1;
  5. do
  6. if ($tablica[$a]==$tablica[$i]) {
  7. unset($tablica[$i]);
  8. }
  9. else {
  10. $a=$a+1;
  11. $i=$i+1;
  12. }
  13. while ($tablica[$a]==0);
  14. do
  15. print $tablica[$i];
  16. while ($tablica[$i]==0);
  17.  
  18. ?>



Pozdrawiam
mortus
Po co wymyślać koło na nowo? Wypróbuj array_unique.
botnaizi
Dobra niby działa ale mam bazę e-maili i wpisane są w notatniku tak :
Kod
a.a@xxx.com, a.a@xxx.com, b.b@xxx.com, b.b@xxx.com
Każdy jest oddzielony przecinkiem. Napisałem coś takiego aby zobaczyć ile jest unikalnych e-maili :
  1. $x = include('1');
  2. $tablica = array($x);
  3. $tab = array_unique($tablica);
  4.  
  5. $ile = count($tab);
  6. echo $ile;

I wyświetla zamiast wyświetlić liczbę unikalnych emaili, wyświetla je wszystkie sad.gif
Jak to zrobić, żeby zrobiło z nich unikalne ?

Ten sam problem pojawia się z str_replace
  1. $x = include(1);
  2. $co = ",";
  3. $naco = "', '";
  4. $b = str_replace($co, $naco, $x);
  5. echo $b;

I wyświetla po prostu zainclude'owane maile.
Przypuszczam, że robię coś źle przy inculde'owaniu pliku "1"



Pozdro
mortus
Bo ani array(), ani str_replace() nie rozbiją Ci zawartości pliku na tablicę, a include nie przypisze zawartości pliku do zmiennej. Rozwiązań jest wiele. Ja zaproponuję dwa:
1. Zapisujesz e-mail'e każdy w osobnej linii i wczytujesz plik za pomocą $emaile = file('nazwa_pliku'), wtedy zmienna $emaile jest już tablicą.
2. Zapisujesz e-maile w takiej postaci jak podałeś, odczytujesz zawartość pliku za pomocą $emaile = file_get_contents('nazwa_pliku'); i za pomocą $emaile_tablica = explode(', ', $emaile); rozbijasz $emaile na tablicę adresów email.
Rozwiązanie 1 - implementacja
  1. $emaile = file('1');
  2. $tab = array_unique($emaile);
  3. echo count($tab);
Rozwiązanie 2 - implementacja
  1. $emaile = file_get_contents('1');
  2. $emaile_tablica = explode(', ', $emaile);
  3. $tab = array_unique($emaile_tablica);
  4. echo count($tab);
botnaizi
mortus, dzięki smile.gif Teraz działa elegancko smile.gif
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.