Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] porównanie dwóch tablic
fr3sh
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 10.01.2008

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


Witam


mam taki problemik nie moge sie odwołąc do elementu tablicy
zamierzenie wogóle jest takie żeby porównać dwie tablice a dokładnie mówiąc każdy element
tablicy [kon] z każdym elementem tablicy [lo] w razie pasowania tych elementów do zmiennej r dodac jeden
niby na pierwszy żut oka nie jest to trudne lecz mam kilka tablic kon czyli kon1 kon2 itd

tablica przykładowa kon1 wyglada tak Array ( [k1] => 1 [k2] => 5 [k3] => 15 [k4] => 33 [k5] => 21 )
tablica lo sie nie zmienia cały czas taka sama Array ( [l1] => 5 [l2] => 3 [l3] => 15 [l4] => 43 [l5] => 18 )

tak chciałem to rozwiązać lecz jak chce wywołac zmienną $$kf czyli odpowiednio
za pierwszym razem pentli for element tablicy kon1 nie ma nic czemu
  1. <?php
  2. for ($d=1; $d<=$s; $d++){  /// wiem ile jest tablic kon dlatego jest $d<=$s
  3.  
  4. $kf = "kon$d";
  5.  
  6. $kf .="[k$d]";
  7.  
  8. $i=1;
  9.  
  10.  while ($i <= 5) { //elementów jest 5 wiec while do 5
  11. $l = "l$i";
  12.  
  13. if ($$kf == $lo[$l]){
  14. $r++;
  15. }
  16. $i++;
  17. }
  18.  
  19. }
  20. ?>


problem jest taki że nie moge wywołać tablicy kon1 kon2 itd

mam nadzieje że nie zamotałem tego smile.gif
Go to the top of the page
+Quote Post
potreb
post
Post #2





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Sprawdź sobie ten sposób na porównywanie:
  1. <?php
  2. $tablica1 = array();
  3. $tablica2 = array();
  4.  
  5. foreach($tablica1 as $klucz => $wartosc) {
  6. if($wartosc==$tablica2[$klucz]) $ok++;
  7. else $zle++;
  8. }
  9. echo 'W tablicy 1 znaleziono '.($zle+$ok).' elementów, w tym '.$ok.' identycznych, jak w tablicy 2. '.$zle.' elementów różniło się.';
  10. ?>


Myślę że cię ten sposób naprowadzi.


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

Go to the top of the page
+Quote Post
fr3sh
post
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 10.01.2008

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


no wszystko ładnie pięknie nawet powiedziałbym sprytne ale
co jak mam kilka tablic

  1. <?php
  2. $tablica1 = array();
  3.  
  4.  
  5. $tablica2 = array();  /// tą tablice chce porównać z tablicą1
  6. $tablica3 = array(); ///// tą tablice chce porównać z tablicą1
  7. $tablica4 = array(); /// tą tablice chce porównać z tablicą1
  8. $tablica5 = array(); /// tą tablice chce porównać z tablicą1
  9.  
  10. //jak teraz napisać to pentle żeby sprawdziła dla wszystkich tablic 
  11. //wiem ile jest tych tablic i każda jest o jedną wieksza czyli tablica6 tablica7
  12. foreach($tablica1 as $klucz => $wartosc) {
  13. if($wartosc==$tablica2[$klucz]) $ok++;
  14. else $zle++;
  15. }
  16. echo 'W tablicy 1 znaleziono '.($zle+$ok).' elementów, w tym '.$ok.' identycznych, jak w tablicy 2. '.$zle.' elementów różniło się.';
  17. ?>


Ten post edytował fr3sh 18.02.2008, 00:46:40
Go to the top of the page
+Quote Post
potreb
post
Post #4





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


To zależy od tego czy chcesz porównać wszystkie tablice z pierwszą:
  1. <?php
  2. if($wartosc==$tablica2[$klucz] || $tablica3[$klucz])
  3. ?>


W tym wypadku dostaniesz wartość zwrotną z dwóch tablic, chyba że chcesz zrobić każdej z osobna to wtedy warunek while stworzyć można.


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

Go to the top of the page
+Quote Post
fr3sh
post
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 10.01.2008

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


no właśnie o to sie rozbiega ze wyciągam to wszystko z bazy i twoże tablice dla kazdego wiersza
i jest odpowiedni tablica1 tablica2 itd itd zliczam ile ich jest za kazdym razem może być inna ilość
dlatego też nie moge porównywać statycznie potrzebuje czegoś takiego żeby mi

  1. <?php
  2.  
  3. for ($d=1; $d<=$s; $d++){ // $s to jest ilość moich tablic 
  4.  
  5. if($wartosc==$tablica "$d" 2<----- do tej dwójki dodało 1 przy każdym sprawdzaniu żeby była już nastepna tablica [$klucz] )
  6. }
  7. ?>


nikt nie jest w stanie mi pomóc??
Go to the top of the page
+Quote Post
nowotny
post
Post #6





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

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


Ja bym powiedział że w tym przypadku masz źle skonstruowaną bazę... czy absolutinie konieczne jest posiadanie takiej ilości tabel...?
Go to the top of the page
+Quote Post
fr3sh
post
Post #7





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 10.01.2008

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


jak moge miec zle baze skoro kazdy użytkownik ma inną ilość wierszy w tabeli i dla każdego użytkownika<br>jest inaczej musze pobierać dla każdego użytkownika wiersze zapisaywac je do nowej zmiennej zliczać <br>ile ich jest a nastepnie porównywac z jedną stała tablicą i sprawdzać ile dla kazdego wiersza było <br>takich samych wartości wiec jak moge miec zła baze questionmark.gif

W sumie to juz sobie poradziłem z problemem.

Dzięki potreb pokombinowałem z twoim rozwiazniem i coś wyszło smile.gif
Go to the top of the page
+Quote Post
misiek172
post
Post #8





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


przecież w manualu są gotowe funkcje do porównywania tablic...

array_diff();


array_diff_key();

array_diff_assoc();

etc. itd. i wiele innych smile.gif wystarczy chcieć winksmiley.jpg


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
fr3sh
post
Post #9





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 10.01.2008

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


DZIĘKI misiek172 nie zauważyłem tego szkoda tylko że mi tego nie pokazałeś wczesniej bo już napisałem całą funkje sad.gif
Go to the top of the page
+Quote Post
kszychu
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Cytat(fr3sh @ 18.02.2008, 22:31:17 ) *
szkoda tylko że mi tego nie pokazałeś wczesniej

A Ciebie to zbanowali na stronie manuala, że pokazywać Ci trzeba? Odrobina samodzielności!


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
fr3sh
post
Post #11





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 10.01.2008

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


heh dobre kszychu Ale można powiedziec że jestem samodzielny bo napisałem sam funkcje która jest już napisana smile.gif

a jesli chodzi o manuala to szukałem tam i tego nie widziałem. Gdzieś mi to umkło a jest to tam jak byk napisane wstydnis.gif
Czasami tak bywa smile.gif
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 Aktualny czas: 21.08.2025 - 04:27