字符串与数字比拟
事理:
php的比拟运算时,是会将两个变量都转换为相同类型,不同变量的无法比拟 当字符串和int类型比拟时,将会把字符串转化为int类型,相称于字符串在底层实行了一次intval()函数. 至于为什么数字放前面就能intval,放后面就弗成,是由于: 该字符串的开始部分决定了它的值,如果该字符串以合法的数值开始,则利用该数值,否则其值为0。 怪不得有些网站注册时非要名字以字符串开头….

把稳:如果字符串在比较时带有’e’,’E’时,会被解析为科学计数法,如var_dump('1e123' == '1');为false
案例1:
案例2:
延伸: 如果字符串和数字比较会涌现类型转换的问题,那么一些php自带函数会不会涌现相同的问题?
虽然也会涌现问题,但是一贯都有办理的方案,in_array()存在第三个参数,决定是否严格检讨, 默认为false , 相称与 “==” , 传入true ,相称于”===” 还有很多这样的函数,如array_search(),这里不一一先容了
函数返回值与数字比拟
这段代码便可以利用传入数组来绕过 由于用strcmp()比拟数组和字符串时返回值为null, 但是 null == 0为true ,以是连续实行
md5() 函数传入数组会返回null; 但是
总结 一定要做好参数的过滤,在利用他之前 该当常用 “===” 来判断,而不是”==” 该当理解每一个常用函数的参数和返回值,只管即便采取严格模式