1、既是0又是1的情况
$a==1 & $test[$a]=t 时
知识点1)php在处理数字时,如果数字的位数超过 16 位是可以弱等于1的,也就是
var_dump( 9999999999999999999 == 1 );//true
因为当数字位数超过 16 位时,是将该数字转换成了数值为 1 的字符串进行处理
知识点2)在科学计数法中也有种特殊情况,0.1e1 是代表 0.1*10,而 .1e1 代表的也是 0.1*10 ,但在数组中时,由于 . 代表的是字符串,所以会于数组中变成 0 ,于 is_numeric 中有点则正常输出为数字
// 打印数组b下标为0的数据
echo $b['.1e1'] //输出t
2、switch代码漏洞
当使用 switch 并且没有使用 break 来跳出循环时,代码是会继续往下执行。这属于程序员在编写程序出现的人为漏洞,并不是语言本身的问题。
3、$a==0可用.绕过(非数字都可绕过)
如何使 $a==0 的同时 $a 又为真?
<?php
$a=$_GET['a'],
if ($a==0){
echo "1";
}
if ($a) {
echo "must";
}
?>