У меня есть следующий фрагмент кода:
$item['price'] = 0;
/* Code to get item information goes in here */
if($item['price'] == 'e') {
$item['price'] = -1;
}
Он предназначен для инициализации цены предмета до 0 и последующего получения информации о ней. Если цена сообщается как «е», это означает обмен, а не продажу, которая хранится в базе данных как отрицательное число.
Существует также возможность оставить цену равной 0, либо потому, что предмет является бонусом, либо потому, что цена будет установлена позже.
Но всякий раз, когда цена не установлена, что оставляет ее с начальным значением 0, цикл if
, указанный выше, оценивается как истинный, а цена устанавливается равной -1. То есть он считает 0 равным 'e'.
Как это можно объяснить?
Когда цена указана как 0 (после инициализации), поведение неустойчиво: иногда if оценивается как true, иногда как false.*
if((string)$item['price'] == 'e')
исправляет странное поведение. См. stackoverflow.com/a/48912540/1579327 для более подробной информации. - person Paolo   schedule 21.02.2018