Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] porównanie dwóch tablic
Forum PHP.pl > Forum > Przedszkole
fr3sh
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
potreb
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.
fr3sh
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. ?>
potreb
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.
fr3sh
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??
nowotny
Ja bym powiedział że w tym przypadku masz źle skonstruowaną bazę... czy absolutinie konieczne jest posiadanie takiej ilości tabel...?
fr3sh
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
misiek172
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
fr3sh
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
kszychu
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!
fr3sh
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
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.