PHP, dizgi girişiyle (URL parametreleri veya tarayıcıdaki bir formdan POST istekleri) sık sık uğraştığınız web istekleriyle kullanılmak üzere tasarlanmıştır (veya daha doğrusu gelişmiştir). Bu nedenle, dizeleri otomatik olarak diğer türlere dökecektir.
Bu basit bir örnek olduğunu '1' + '2'
verir 3
, değil bir hata veya '12
' veya başka bir yorumunu. Aynı mantıkla, dize '0'
sayısal olarak kullanılabilir 0
.
Bu arada, birçok dilde olduğu gibi PHP, boolean'a yayınlandığında belirli değerleri "yanlış" olarak kabul eder - dediğiniz gibi sezgisel olarak "boş" olanlar. Buna sayısal 0
, boş dize ''
ve boş dizi de dahildir []
. Bir if
ifadede, ifade açıkça boole'ye dökülür if ( 0 )
, aynı şekilde if ( false )
.
Bu iki şeyi bir araya getirmek, bir muamma elde edersiniz: bir yandan, '0'
boş bir dize dediğiniz gibi ; Öte yandan, bunun 0
"boş" bir sayısal olarak kullanılabileceğini söyledik . PHP '0'
"sıfırlık" ı "sersemlik" den daha önemli olarak ele almayı tercih eder, bu yüzden "falsy" olarak kabul edilir.
Kısacası '0' == 0 == false
:; veya(bool)'0' === (bool)(int)'0'