Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Tablica, odejmowanie od wartości
Forum PHP.pl > Forum > Przedszkole
zyluss
Witajcie, próbuję zbudować koszyk zakupowy, stanąłem w miejscu w którym muszę pobrać z tablicy produkty z symbolem P i odjąć od najniższej ceny -30%, ale tylko w momencie kiedy produktów z symbolem jest więcej niż 5.

  1.  
  2. $licz = 0;
  3. foreach((array) $_SESSION['koszyk'] as $PRO)
  4. {
  5. $calosc .= "<tr><td>".$PRO['item']." - ".$PRO['wielkosc']."</td><td>".$PRO['symbol']." </td><td>".$PRO['cena']."</td></tr>";
  6. }
  7. $licz++;
  8. }


Dzięki!
Pyton_000
Skoro masz warunki i cel to jaki masz problem?
zyluss
Szczerze, nie wiem jak mam się do tego zabrać..
nospor
Jesli nie wiesz jak sie zabrac za pewne rzeczu, zaczynaj krok po kroku, od najprostrzych.

Sam napisales ze masz pobrac produkty z symbolem P. Zrob wiec to. No chyba produkty z symbolem P potrafisz pobrac?

Potem policz liczbe tych produktow. No to chyba tez umiesz, prawda?

Jesli ta liczba jest wieksza niz 5 wtedy masz "najtrudniejsze" czyli odjecie od najtanszej. Do tego dojdziemy pozniej, zrob najpierw pierwsze dwa kroki
zyluss
  1. foreach((array) $_SESSION['koszyk'] as $PRO) {
  2. if($PRO['symbol'] == "p") {
  3. echo $PRO['cena'];
  4.  
  5. } $laczenierabat = count ($PRO['symbol'] == "p");
  6. echo $laczenierabat; }



Cenę podaje prowidłowo tylko z symbolem P, natomiast zlicza każdy produkt w koszyku jako 1
nospor
czyli jednak nie potrafisz pobrac elementow P...

Dobra, to inaczej. Uzyj funkcji array_filter() - patrz manual
zyluss
  1. $filter = function($PRO){
  2. return ( $PRO['symbol'] == "p" );
  3. }
  4.  
  5. $filtredArray = array_filter($filter, $PRO);
  6. echo $filtredArray;



zła funkcja?
nospor
http://www.php.net/array_filter
Masz tam czarno na bialym co i jak. Nawet nie po chinsku...
zyluss
Nospor, umiem trafić do manuala, z pełnym szacunkiem, nie radzę sobie, nie wiem jak mam to wykorzystać do swoich potrzeb stąd mój post, jeżeli byłoby inaczej nie pisałbym. Nie pracowałem wcześniej na tablicach, teraz się to zmieniło, nie odbierz tego ze potrzebuje gotowego skryptu, ładnie z Twojej strony że starasz się mnie naprowadzić ale i tak jw. nie wiem co z tym dalej zrobić.
"Myśl, myśl, myśl..." podpowiada tylko że błądzę z nieumiejętności wykorzystania rzeczy które dla mnie nie są "czarno na białym".

Wiem już czego muszę użyć, widzę mniej więcej jak ale w którym kierunku do mojej potrzeby to już nie.. pomożesz w tym przypadku?

-- add

w sensie muszę zadeklarować w funkcji co chcę wyciągnąć z tablicy, ale robię to źle, co potrzeba mi zmienić?
nospor
Ale czy ja naprawde wymagam tak duzo? W manualu jak wol masz napisane, ze dla array_filter przekazuje sie najpierw tablice, a potem funkcje. Ty zas robisz na odwrot. Czy naprawde jestem taki zly, ze mnie drazni fakt, ze nie czytasz co masz jak wol podane? Tlumaczenie sie ze nigdy na tablicach nie pracowales tutaj ma sie naprawde nijak.

Dodatkowo i tak zle zrobiles calosc bo niby co to jest to $PRO? z kodu wczresniejszych wnioskuje ze jest to element z foreach, co jest totalnie bledne. Ale to juz wyjasniaja przyklady z manuala.
zyluss
starałem się wytłumaczyć Ci że nawet jakbyś miał wymienić klocki hamulcowe w maluchu i miałbyś książkę serwisową z dokładną stroną ich wymiany, to bez umiejętności używania narzędzi sobie prawdopodobnie nie poradzisz, ja jestem w takiej sytuacji, ale jak mi powiesz weź trzymaj klucz odwrotnie bo ta końcówka będzie bardziej odpowiednia, to zaskoczę i może uda mi się to zrobić..

od malucha po kod: $PRO - to tablica

  1. $filtredArray = array_filter($PRO, $filter);


a funkcje skopałem również, tak?

  1. $filter = function($PRO){
  2. return ( $PRO['symbol'] == "p" );
  3. }
nospor
Cytat
starałem się wytłumaczyć Ci że nawet jakbyś miał wymienić klocki hamulcowe w maluchu i miałbyś książkę serwisową z dokładną stroną ich wymiany, to bez umiejętności używania narzędzi sobie prawdopodobnie nie poradzisz,

Ja to porownuje do tego:
masz napisane, ze masz uzyc klucz 10, a potem klucz 17. Ty zas uzywasz klucz 17 a potem 10. Nie wiem jaka wiedze mechaniczna trzeba miec, by moc zaczac uzywac takiej instrukcji. Jak dla mnie zadna. Z taka instrukcja mozna zaczynac przy wiedzy 0. Cyferki na kluczach sa dosc wyrazne smile.gif

zyluss
  1. $filtruj = 'p';
  2. $pofiltrowaniu = array_filter($PRO, function ($PRO) use ($filtruj) {
  3. return ($filtruj['symbol'] == $filtruj);
  4. });
  5. print_r($pofiltrowaniu);


walczę, ale dostaję posty print.. a chyba złożyłem poprawnie? czy nazwa funkcji nie ma być nazwą tablicy(bo tak samo pusto)?
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.