誰能解釋爲什麼發生這種情況時,怪異的行爲比較
<?php
if (0 == 'fasas')// or if ('fasas' == 0)
{
exit('if condition success');
}
exit;
輸出:if condition success
我在這裏檢查字符串等同於零,它總是成功,我可以」 t瞭解此行爲
誰能解釋爲什麼發生這種情況時,怪異的行爲比較
<?php
if (0 == 'fasas')// or if ('fasas' == 0)
{
exit('if condition success');
}
exit;
輸出:if condition success
我在這裏檢查字符串等同於零,它總是成功,我可以」 t瞭解此行爲
請參閱string conversion to numbers in PHP。
該值由字符串的起始部分給出。如果字符串 以有效數字數據開頭,則這將是使用的值。 否則,該值將爲0(零)。
所以:
if ('fasas' == 0) {
echo 'This is true, fasas has no numbers so it is converted to 0';
}
if ('0fasas' == 0) {
echo 'This is true also, 0fasas is converted to 0';
}
if ('1fasas' == 0) {
echo 'This is false, 1fasas is converted to 1';
}
您必須使用===
這是一個嚴格的比較意味着價值和類型正在被比較。
僅使用==
並不嚴格,這意味着將字符串與0進行比較也是正確的。
if ('fasas' === 0)
{
exit('if condition success');
}
exit;
您還可以使用strcmp(),這是一個安全的二進制比較。
This is an interesting blog about it。
希望這會有所幫助!
我知道,但我的問題是'如果( '' == 0){ 退出 ( '如果條件成功'); } exit;'如果條件成功,將會輸出' –
if('any string'== 0)will always be be true。如果('任何字符串'=== 0)將始終爲假,即使('0'=== 0) – Yani
我知道,但通常當我們比較它應該檢查等效,這是許多框架的作用thanx –
偉大的工作thanx這就是我一直在尋找 –