Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Porównanie elementów tablicy
Forum PHP.pl > Forum > Przedszkole
-Piko-
Witam, mam taki problem.
Potrzebuje porównać elementy dwóch tablic. Funkcja ma zwrócić elementy drugiej tablicy, które nie występują w tablicy pierwszej. napisałem cos takiego:
  1. <?php
  2. $k=0;
  3. for($i=0; $i<$ile_starych+1; $i++)
  4. {
  5. for($j=0; $j<$ile_nowych; $j++)
  6. {
  7. if($katalog_z_bazy[$i] != $znalazl[$j])
  8. {
  9. $dodac_tmp[$k] = $znalazl[$j];
  10. $k++;
  11. }
  12. }
  13. }
  14. ?>

$ile_starych to ilość elementów tablicy $katalog_z_bazy[]
$ile_nowych to ilość elementów tablicy $znalazl[]

Oczywiście funkcja nie chodzi poprawnie, z przyczyn wiadomoych jak widać powyżej - działa jakby bez pamięci
Czy ktoś wie jak to poprawić
nospor
a nie lepiej skorzystac z gotowych funkcji?
http://pl.php.net/manual/pl/function.array-diff.php
chemik1982
Zajrzyj tu:
array_diff
pozdro
nowotny
I na co tak kombinować... winksmiley.jpg
  1. <?php
  2. $diff=array_diff($tablica2,$tablica1);
  3. ?>
-piko-
Funkcja ta prawie rozwiązała mój problem... Musze to tylko jakoś dostosować aby funkcja ta zwracała elementy nie występujące w tablicy 1 a występujące w tablicy drugiej, ale to o ile sie nie myle można jakimś jednym warunkiem sprawdzić smile.gif

THX
nowotny
Można to łatwo zrobić zamieniając kolejność tablic... tak jak ci napisałem...
-Piko-
Już sobie poradziłem z problemem tylko że powstaje mi nowa tablica gdzie wartości które się różniły są nadal indeksowane na starych pozycjach np.

Array ( [1] => 2008-06-03 [3] => 2008-07-20 )

jest jakaś funkcja która ułoży tą tablice o tak:

Array ( [0] => 2008-06-03 [1] => 2008-07-20 )

Z góry dzięki
nowotny
Albo ręczne przepisanie tablicy albo sort" title="Zobacz w manualu PHP" target="_manual jeśli ci nie przeszkadza sortowanie przy okazji...
chemik1982
na szybko.
  1. <?php
  2. $array1 = array(1,2,3,4);
  3. $array2 = array(1,5,4,6);
  4.  
  5. $array3 = (array_diff($array1,$array2));
  6. $array4 = array();
  7. while(current($array3)){
  8. array_push($array4,current($array3));
  9. next($array3);
  10. }
  11.  
  12. var_dump($array4);
  13. ?>
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.