Ho il seguente pezzo di codice:
$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] == 'e') {
$item['price'] = -1;
}
Ha lo scopo di inizializzare il prezzo dell'articolo su 0 e quindi ottenere informazioni su di esso. Se il prezzo è indicato come "e", significa uno scambio invece di una vendita, che viene memorizzato in un database come numero negativo.
C'è anche la possibilità di lasciare il prezzo a 0, sia perché l'articolo è un bonus, sia perché il prezzo verrà fissato in un secondo momento.
Ma, ogni volta che il prezzo non è impostato, che lo lascia con il valore iniziale di 0, il if
ciclo sopra indicato viene valutato come vero e il prezzo è impostato a -1. Cioè, considera 0 uguale a "e".
Come si spiega questo?
Quando il prezzo viene fornito come 0 (dopo l'inizializzazione), il comportamento è irregolare: a volte l'if viene valutato come vero, a volte come falso. *
if((string)$item['price'] == 'e')
risolve il comportamento strano. Vedi stackoverflow.com/a/48912540/1579327 per maggiori dettagli