Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Tablice - jak porównać elementy
Radzio84
post 22.01.2008, 00:45:17
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 2
Dołączył: 15.01.2008

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


Mam koszyk, który jest tablicą i składa się z następujących elementów:
$koszyk[$i][0] = idproduktu
$koszyk[$i][1] = kolor1
$koszyk[$i][2] = kolor2

gdzie $i, to jest numer kolejnego koszyka (produktu w koszyku).
Dodając nowe produkty muszę sprawdzić, czy dodawany produkt nie znajduje się już w koszyku (jeżeli idproduktu=id_prod_w_koszyku AND kolor1=kolor1_w_koszyku AND kolor2=kolor2_w_koszyku, to produkty są takie same). Problem polega na tym, że nie mogę sobie poradzić ze sprawdzeniem powyższego warunku, ponieważ dodawane pordukty także są w tablicy i ich ilośc (tak jak w koszyku) jest zmienna. Jeśli ma ktoś jakiś pomysł, to będę wdzięczny za pomoc.

Ten post edytował Radzio84 22.01.2008, 00:46:19
Go to the top of the page
+Quote Post
Siner
post 22.01.2008, 01:25:22
Post #2





Grupa: Zarejestrowani
Postów: 159
Pomógł: 6
Dołączył: 2.01.2004

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


Może zlicz ilość elementów tablicy za pomocą count() i sprawdzaj czy obydwie tablice maja tyle samo elementów, jeśli tak to po kolejki w pętli sprawdzaj czy wartości w kolejnych elementach są takie same.


--------------------
Go to the top of the page
+Quote Post
Radzio84
post 22.01.2008, 07:04:56
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 2
Dołączył: 15.01.2008

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


Robiłem tak:
Kod
for($i0;$i<count($ile_produktow_do_dodania);$i++)
{
    for($j0;$j<count($ile_produktow_w_koszyku);$j++)
    {
     tutaj sprawdzam po kolei elementy tablic
    }

}

ale nie zdaje to egzaminu.

Ten post edytował Radzio84 22.01.2008, 07:31:31
Go to the top of the page
+Quote Post
Grzyw
post 22.01.2008, 07:46:26
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


Musi zdać egzamin, pętlę w pętli masz dobrze zagnieżdżoną.
Pokaż nam, jaki warunek sprawdzasz wewnątrz.


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
Radzio84
post 22.01.2008, 08:06:08
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 2
Dołączył: 15.01.2008

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


Początkowo, gdy nie było kolorów to sprawdzałem tylko po idproduktu. Wrzucałem sobie wszystkike idproduktow, które znajdują się w koszyku do tablicy i potem sprawdzałem czy nowy produkt znajduje się w zbiorzej tych id:
Kod
for($k=1;$k<=$ile_prod_w_koszyku;$k++)
{
$id_prod_w_koszyku[]=$koszyk[$k][0];
}

Następnie sprawdzałem, czy dodawany produkt jest już w powyższej tablicy, jeśli nie jest to wrzucałem to id do tablicy "prod_do_dodania".
W przeciwnym wypadku wrzucałem takie id do tablicy "do_poprawy_ilosci" i zapamietywalem dodatkowo ilosc dodawanego towaru - gdy dodawany produkt jest juz w koszyku, to zmieniam tylko jego ilosc.
Kod
for($j=0;$j<$ile_towarow_do_dodania;$j++)
{
if(!in_array($idtowaru[$j], $id_prod_w_koszyku)) $prod_do_dodania[]=$idtowaru[$j];
}
else
{
$do_poprawy_ilosci[$j][0]=$idtowaru[$j];
$do_poprawy_ilosci[$j][1]=$ilosc2[$j];
}


Następnie zczytywałem pokolei powyższe tablice w pętli i zmieniałem tylko ilość, bądź dodawałem jako kolejny produkt w koszyku.
Teraz natomiast muszę porównać jeszcze kolory i tu mam roblem.

Ten post edytował Radzio84 22.01.2008, 08:06:55
Go to the top of the page
+Quote Post
Siner
post 22.01.2008, 11:28:10
Post #6





Grupa: Zarejestrowani
Postów: 159
Pomógł: 6
Dołączył: 2.01.2004

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


Może tak to ma mniej więcej wyglądać ?
  1. <?php
  2. for($i = 0, $c = count($koszyk); $i<$c;++$i)
  3. {
  4. $elmenty = count($koszyk[$i];
  5. if($elemty == $elemty_dodwanego_produkty) // $elemty_dodwanego_produkty - to trzeba policzyć
  6. {
  7. for($z = 0; $z<$elementy; ++$z)
  8. {
  9. if($koszyk[$i][$z] != $dodwany_produkt[$z])
  10. {
  11.  //Produkty nie są takie same
  12. break;  
  13. }
  14. }
  15. }
  16. else
  17. {
  18.  //Produkty nie są takie same
  19.  }
  20. }
  21. ?>


--------------------
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: 24.07.2025 - 13:20