switch的松比较

    技术2022-05-19  22

    . 警惕switch/in_array等的松比较(loose comparision):

    switch和in_array都是采用松比较, 所以在要比较的变量之间类型不一样的时候, 很容易出错:

    switch ($name) { case "laruence": ... break; case "eve": ... break; }

    对于上面的switch, 如果$name是数字0, 那么它会满足任何一条case. 同理在in_array中也是.

    解决的办法就是, 在switch之前, 把变量类型转换成你所期望的类型.

    switch (strval($name)) { case "laruence": ... break; case "eve": ... break; }

    而, in_array提供了第三个可选的参数, 通过这个参数可以改变默认的比较方式.

     

     

     

    转自 http://www.laruence.com/2011/03/24/858.html

     

    in_array第三个参数type 可选。如果设置该参数为 true,则检查搜索的数据与数组的值的类型是否相同。


    最新回复(0)