PHP был разработан (или, скорее, развит) для использования с веб-запросами, когда вы часто имеете дело со строковым вводом (параметры URL или запросы POST из формы в браузере). Таким образом, он будет автоматически приводить строки к другим типам.
Простым примером этого является то , что '1' + '2'
дает 3
, а не ошибку, или '12
', или некоторую другую интерпретацию. По той же логике, строка '0'
может быть использована в качестве числа 0
.
Между тем, как и во многих языках, PHP обрабатывает определенные значения как «ложные» при приведении к логическим значениям, которые, как вы говорите, интуитивно «пусты». Это включает в себя числовые 0
, а также пустую строку ''
и пустой массив []
. В if
утверждении выражение явно приведено к логическому значению, так if ( 0 )
же как и if ( false )
.
Соединяя эти две вещи вместе, вы получаете загадку: с одной стороны, как вы говорите, '0'
непустая строка; с другой стороны, мы сказали, что он может быть использован как числовой 0
, который является «пустым». PHP предпочитает рассматривать «ноль» как более важный, чем «неровность», так что '0'
это считается «ложью».
Короче говоря '0' == 0 == false
:; или(bool)'0' === (bool)(int)'0'