Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Porównanie elementów tablicy
--Piko--
post 29.07.2008, 15:26:13
Post #1





Goście







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ć
Go to the top of the page
+Quote Post
nospor
post 29.07.2008, 15:27:14
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a nie lepiej skorzystac z gotowych funkcji?
http://pl.php.net/manual/pl/function.array-diff.php


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
chemik1982
post 29.07.2008, 15:27:55
Post #3





Grupa: Zarejestrowani
Postów: 91
Pomógł: 13
Dołączył: 20.03.2007
Skąd: Bydgoszcz

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


Zajrzyj tu:
array_diff
pozdro


--------------------
fitmate.pl - aplikacje internetowe
Go to the top of the page
+Quote Post
nowotny
post 29.07.2008, 15:31:20
Post #4





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


I na co tak kombinować... winksmiley.jpg
  1. <?php
  2. $diff=array_diff($tablica2,$tablica1);
  3. ?>
Go to the top of the page
+Quote Post
--piko--
post 29.07.2008, 15:32:43
Post #5





Goście







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
Go to the top of the page
+Quote Post
nowotny
post 29.07.2008, 15:40:14
Post #6





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Można to łatwo zrobić zamieniając kolejność tablic... tak jak ci napisałem...
Go to the top of the page
+Quote Post
--Piko--
post 29.07.2008, 15:47:35
Post #7





Goście







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
Go to the top of the page
+Quote Post
nowotny
post 29.07.2008, 15:55:04
Post #8





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Albo ręczne przepisanie tablicy albo sort" title="Zobacz w manualu PHP" target="_manual jeśli ci nie przeszkadza sortowanie przy okazji...
Go to the top of the page
+Quote Post
chemik1982
post 29.07.2008, 16:04:32
Post #9





Grupa: Zarejestrowani
Postów: 91
Pomógł: 13
Dołączył: 20.03.2007
Skąd: Bydgoszcz

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


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. ?>


--------------------
fitmate.pl - aplikacje internetowe
Go to the top of the page
+Quote Post
Kicok
post 29.07.2008, 18:56:41
Post #10





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


array_values" title="Zobacz w manualu PHP" target="_manual


--------------------
"Sumienie mam czyste, bo nieużywane."
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: 7.07.2025 - 01:58