php中是弱类型语言,在是使用intval 和 floatval 判断变量或者是进行类型转换时,php会进行类型转换;
1 var_dump(intval('abc') == 0); //true 2 var_dump('abc' == 0); //true 3 var_dump('' == 0); //true 4 var_dump(null == 0); //true
所以,在使用intval 和 floatval 时要特别注意,建议使用下面方式:
1 /** 2 * 3 * 4 * @param $num 5 * @return bool|int 6 */ 7 function intval($num) 8 { 9 if(is_numeric($num) && intval($num) == $num){ 10 return intval($num); 11 } else { 12 return false; 13 } 14 } 15 16 /** 17 * 18 * @param $float 19 * @return bool|int 20 */ 21 function floatval($float){ 22 if(is_numeric($float) && floatval($float) == $float){ 23 return floatval($float); 24 } else { 25 return false; 26 } 27 }