Eu tenho o seguinte código:
$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] == 'e') {
$item['price'] = -1;
}
A intenção é inicializar o preço do item para 0 e, em seguida, obter informações sobre ele. Se o preço for informado como 'e', significa uma troca ao invés de uma venda, que é armazenada em um banco de dados como um número negativo.
Existe também a possibilidade de deixar o preço 0, seja porque o artigo é um bónus ou porque o preço será definido posteriormente.
Porém, sempre que o preço não for definido, o que o deixa com o valor inicial 0, o if
loop indicado acima é avaliado como verdadeiro e o preço é definido como -1. Ou seja, considera 0 igual a 'e'.
Como isso pode ser explicado?
Quando o preço é fornecido como 0 (após a inicialização), o comportamento é errático: às vezes if é avaliado como verdadeiro, às vezes é avaliado como falso. *
if((string)$item['price'] == 'e')
corrige o comportamento estranho. Consulte stackoverflow.com/a/48912540/1579327 para mais detalhes