隐形类型的转换,在PHP中是个很常见的问题,但是又不一定会注意得到.我所知道的情况进行记录下,一遍查阅
1.字符串索引 字符串可以通过 $str[index]访问这是都知道的.但是当index并非规范的数字的时候,就会发送数据类型的隐形转换. $str['sdfsdf'] => $str[0], $str['3sf']=>$str[3]. 这个时候的转换是 index会转换为整型,值则根据字符串开始的值.
2.数组(这个一般来说不会碰到,但是有看到这个也就记上了)
<?php
function testArr($param) {
var_dump($param['abc']);
}
testArr(false); // NULL
testArr(123); // NULL
testArr(123.456); // NULL
testArr('string'); // string(1) "s"
testArr(array('abc'=>'text')); // string(4) text
testArr(new ArrayObject()); // Notice: undefined index: abc
?>
这种一般都不会出现的吧....
情况最多的是 字符串和数字进行比较时,是将string类型转换为number类型在进行比较
所有
$a = 'a';
$b = 0;
$a == $b; //return true;
$a === $b; //return false,会进行类型的判断
数组函数in_array();bool in_array ( mixed $needle , array $haystack [, bool $strict ] )以前一直没注意第三个参数.
var_dump(in_array(0, array('s'))); // true
让一个不指定第三个参数,字符’s'也会转换为整形0,返回true
浙公网安备 33010602011771号