Tengo el siguiente código:
$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] == 'e') {
$item['price'] = -1;
}
Su objetivo es inicializar el precio del artículo a 0 y luego obtener información sobre él. Si el precio se informa como 'e', significa un intercambio en lugar de una venta, que se almacena en una base de datos como un número negativo.
También existe la posibilidad de dejar el precio en 0, ya sea porque el artículo es un bono o porque el precio se fijará en un momento posterior.
Pero, siempre que no se establece el precio, lo que lo deja con el valor inicial de 0, el if
ciclo indicado arriba se evalúa como verdadero y el precio se establece en -1. Es decir, considera que 0 es igual a 'e'.
¿Cómo se puede explicar esto?
Cuando el precio se proporciona como 0 (después de la inicialización), el comportamiento es errático: a veces, si se evalúa como verdadero, a veces se evalúa como falso. *
if((string)$item['price'] == 'e')
corrige el comportamiento extraño. Consulte stackoverflow.com/a/48912540/1579327 para obtener más detalles