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