Почему PHP считает 0 равным строке?

У меня есть следующий фрагмент кода:

$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 равным «е».

Как это можно объяснить?

Редактировать: Когда цена указывается как 0 (после инициализации), поведение неустойчиво: иногда if оценивается как истина, иногда как ложь.

102
задан Sérgio Domingues 4 April 2019 в 16:47
поделиться