Mam następujący fragment kodu:
$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] == 'e') {
$item['price'] = -1;
}
Ma na celu zainicjowanie ceny przedmiotu na 0, a następnie uzyskanie informacji o niej. Jeżeli cena jest oznaczona jako „e”, oznacza to wymianę zamiast sprzedaży, która jest przechowywana w bazie danych jako liczba ujemna.
Istnieje również możliwość pozostawienia ceny jako 0, ponieważ przedmiot jest bonusem lub cena zostanie ustalona w późniejszym momencie.
Ale za każdym razem, gdy cena nie jest ustalona, co pozostawia wartość początkową 0, if
pętla wskazana powyżej jest oceniana jako prawda, a cena jest ustawiana na -1. Oznacza to, że uważa 0 za równe „e”.
Jak można to wyjaśnić?
Gdy cena jest podana jako 0 (po inicjalizacji), zachowanie jest błędne: czasami wartość if jest oceniana jako prawda, czasami jest oceniana jako fałszywa. *
if((string)$item['price'] == 'e')
naprawia dziwne zachowanie. Zobacz stackoverflow.com/a/48912540/1579327 o więcej szczegółów