1 <?php 2 /* 数字与字符串比较测试 */ 3 // 数字0与空字符串比较 4 if (0 == '') 5 echo "0 == ''<br/>"; // ok 6 7 // 数字0与字符串'0'比较 8 if (0 == '0') 9 echo "0 == '0'<br/>"; // ok 10 11 // 数字0与字符串'0.0'比较 12 if (0 == '0.0') 13 echo "0 == '0.0'<br/>"; // ok 14 15 // 数字0与字符串'00'比较 16 if (0 == '00') 17 echo "0 == '00'<br/>"; // ok 18 19 // 数字0与字符串'1'比较 20 if (0 == '1') 21 echo "0 == '1'<br/>"; // not ok 22 23 // 数字0与字符串'a'比较 24 if (0 == 'a') 25 echo "0 == 'a'<br/>"; // ok!!! 26 27 // 数字0与字符串'b'比较 28 if (0 == 'b') 29 echo "0 == 'b'<br/>"; // ok!!! 30 31 // 数字0与字符串'as8dfu9asfofosj24279sjdf'比较 32 if (0 == 'as8dfu9asfofosj24279sjdf') 33 echo "0 == 'as8dfu9asfofosj24279sjdf'<br/>"; // ok!!! 34 35 // 数字0与字符串'2a'比较 36 if (0 == '2a') 37 echo "0 == '2a'<br/>"; // not ok 38 39 // 数字0与字符串'0a'比较 40 if (0 == '0a') 41 echo "0 == '0a'<br/>"; // ok 42 ?>
解释
<?php echo (float)'a' . '<br/>'; // 0 echo (float)'2a' . '<br/>'; // 2 echo (float)'a2a' . '<br/>'; // 0 echo (float)'22a' . '<br/>'; // 22 ?>
php对于有些含有字母的字符串先自动转为0再比较,
而对于以数字开头的字符串先自动转为相应的数字再比较。