Ich habe den folgenden Code:
$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] == 'e') {
$item['price'] = -1;
}
Es ist beabsichtigt, den Artikelpreis auf 0 zu initialisieren und dann Informationen darüber zu erhalten. Wenn der Preis als "e" angegeben wird, bedeutet dies einen Umtausch anstelle eines Verkaufs, der als negative Zahl in einer Datenbank gespeichert wird.
Es besteht auch die Möglichkeit, den Preis als 0 zu belassen, entweder weil der Artikel ein Bonus ist oder weil der Preis zu einem späteren Zeitpunkt festgelegt wird.
Wenn jedoch der Preis nicht festgelegt ist und der Anfangswert 0 bleibt, wird die if
oben angegebene Schleife als wahr ausgewertet und der Preis auf -1 festgelegt. Das heißt, es betrachtet 0 als gleich 'e'.
Wie kann das erklärt werden?
Wenn der Preis als 0 angegeben wird (nach der Initialisierung), ist das Verhalten unberechenbar: Manchmal wird das if als wahr bewertet, manchmal als falsch. *
if((string)$item['price'] == 'e')
behebt das seltsame Verhalten. Siehe stackoverflow.com/a/48912540/1579327 für weitere Details