Czy to najlepszy wybór, żeby ten kod przeniesc do switch? Czy dobrze to zrobiłem?

0

tak jak w temacie nigdy sie z switchami nie bawiłem.nie piszcie mi o tutorialach bo ja ich nie rozumiem dopuki sam nie napiszę lub z czyjąś pomocą i nie zrozumiem na jakiej zasadzie to dziala.

if($wymagaj_kasa['wymagane_pieniadze'] == 'milion 100' && $osobnik['kup'] == 'milion 101') $moze_kupic = 1;
elseif ($wymagaj_kasa['wymagane_pieniadze'] == 'milion 90' && $osobnik['kup'] == 'milion 91') $moze_kupic = 1;
elseif ($wymagaj_kasa['wymagane_pieniadze'] == 'milion 80' && $osobnik['kup'] == 'milion 81') $moze_kupic = 1;
elseif ($wymagaj_kasa['wymagane_pieniadze'] == 'milion 70' && $osobnik['kup'] == 'milion 71') $moze_kupic = 1;
elseif ($wymagaj_kasa['wymagane_pieniadze'] == 'milion 60' && $osobnik['kup'] == 'milion 61') $moze_kupic = 1;
elseif ($wymagaj_kasa['wymagane_pieniadze'] == 'milion 50' && $osobnik['kup'] == 'milion 51') $moze_kupic = 1;
else $moze_kupic = 0;

a switch zrobilem tak ale zapewne zle:

switch($wymagaj_kasa['wymagane_pieniadze']){
case 'milion 90' : $osobnik['kup']  == 'milion 91':
$moze_kupic = 1;
break;

default: 0
}
1

Sporo kodu duplikujesz w tej drabince if-ów. Poza tym, w tym kodzie operujesz de facto na liczbach, więc powinieneś użyć liczb, a nie ciągów znaków.

No i nie pisz też, żeby Cię nie odsyłać do tutoriali – po to one istnieją, abyś nie musiał pytać na forum „czy dobrze zrobiłem”. Od tego właśnie jest dokumentacja, aby się tego dowiedzieć. A żeby wiedzieć czy kod poprawnie działa, należy go uruchomić, a nie pytać nas czy to ma prawo działać.

Przy okazji – w przykładzie tego switch-a zgubiłeś ząbki dla łańcuchów.

1

Skoro nie rozumiesz jak działa switch i nie wiesz jak poprawnie zrefaktoryzować swój kod - to polecam działać na prostych przykładach.

IF

if($x == 5) {$y = 10};
if($x == 6) {$y = 20};
if($x == 7) {$dlaOdmianyZ = 30};

SWITCH

switch($x){
 case 5 : $y = 10;break;
 case 6 : $y = 20;break;
 case 7 : $dlaOdmianyZ = 30; break;
}

Twój kod tak jak napisał poprzednik operuje na złych typach danych, stosujesz też polskie nazwy zmiennych, indeksów. Nie wiem jak inni programiści phpowi - ale ja uważam że powinno stosować się camelCase w nazewnictwie.

1

nie potrzebna ci drabinka ifów, ani switch, a jedynie jeden if i porównanie liczb (a ty porównujesz teksty, nie wiadomo dlaczego).
Coś w stylu:

$moze_kupic = $wymagane_pieniadze <= $suma_pieniedzy;
if ($moze_kupic) {...........}

jeśli wymagane pieniądze są mniejsze lub równe sumie pieniędzy, to znaczy, że może kupić.

0

właśnie na odwrót mi chodzi o to zeby osoba mogla kupic jezeli liczby się zgadzają inaczej zwraca false

0

Nie rozumiem czemu tak, ale jeśli tak, to robisz zamiast <= to == albo ===. Ale szczerze mówiąc tak to można tłumaczyć cały jezyk. Na serio powinieneś sięgnąć po jakiś tutorial albo podręcznik.

0

twoim przykładem zwróce 0 dlatego ze,

$moze_kupic = $wymagane_pieniadze == $osobnik['kup'];

bo tutaj juz osobnik kup ma inna liczbe i zwróci 0

elseif ($wymagaj_kasa['wymagane_pieniadze'] == 'milion 90' && $osobnik['kup'] == 'milion 91') $moze_kupic = 1;
0

@axelbest: juz sobie poradziłem teraz ostatnie pytanko daloby jeszcze bardziej to skróić? np zeby to moze_kupic wystepowalo 1x?

	  switch ([$wymagaj_kasa['wymagane_pieniadze'], $osobnik['kup']]) {
    case ['Milion 90', 'Milion 91']:
        $moze_kupic= 1;
    break;
default;
break;
}

bo uzywam tego do sprawdzenia i update bazy

if($moze_kupic == 1){
wtedy update bazy echo itp
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1