Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Tablice - jak porównać elementy
Forum PHP.pl > Forum > Przedszkole
Radzio84
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.
Siner
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.
Radzio84
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.
Grzyw
Musi zdać egzamin, pętlę w pętli masz dobrze zagnieżdżoną.
Pokaż nam, jaki warunek sprawdzasz wewnątrz.
Radzio84
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.
Siner
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. ?>
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.