数据类型的自动转换一般发生在运算或者if判断时,两种不同类型的数据会自动转换,转换的原则是小类型往大类型转换。如下图:
<?php
$int = 10;
$flo = 21.1;
$bool = false;
$str = "ni";
$a = $int + $flo;
$type = gettype($a);
echo "整形和浮点型的结果:$a 类型是:$type <br>";
$b = $int + $bool;
$type = gettype($b);
echo "整形和布尔型的结果:$b 类型是:$type <br>";
$c = $int + $str;
$type = gettype($c);
echo "整形和字符串的结果:$c 类型是:$type <br>";
$d = $flo + $bool;
$type = gettype($d);
echo "浮点型和布尔型的结果:$d 类型是:$type <br>";
$e = $flo + $str;
$type = gettype($e);
echo "浮点型和字符串的结果:$e 类型是:$type <br>";
$f = $bool + $str;
$type = gettype($f);
echo "布尔型和字符串的结果:$e 类型是:$type <br>";
?>
实验结果图
无论自动转换和强制转换都要注意下几点:
- 浮点型转整型时,会割舍取整数部分,没有四舍五入。
<?php
$flo = 110.9;
$int = (int)$flo;
var_dump($int);
?>
-
浮点型转整型要注意整型的最大、最小值,超出整型范围会溢出。
-
字符串转整型需要注意以下几点:
- 字符串中都是字时转为0;
- 字符串中间有数字转为0;
- 字符串开头是数字转为开头的数字(数字一直到不是数字为止);
- 456e3注意这是科学计数法,所以这也应该认为是数字;
判断类型的语法:
<?php
is_bool(); //是否为布尔型
is_int(); is_integer(); is_long(); //是否为整型
is_float(); is_double(); is_real(); //是否为浮点型;
is_string(); //是否为字符串
is_array(); //是否为数组
is_object(); //是否因为对象;
is_resource(); //是否为资源
is_null(); //是否为空,这是判断数据类型是否为空,与empty();不同,这是判断内容是否为空
is_scalar(); //是否为标量
is_numeric(); //是否为任何类型的数字和数字字符串
is_callable(); //是否为有效的函数名
?>
网友评论