0x01 自动转换
运算过程需要的数据类型和提供的数据类型不一致,将数据类型转为自己需要的类型
<?php
header('content-type:text/html;charset=utf-8');
echo '1aa'+'7c';
echo '<br>';
?>
加号做数字运算,会将字符串转为数字
0x02 强制转换
强制将数据转换成自己想要的类型
语法:(自己想要的数据类型)数据
<?php
header('content-type:text/html;charset=utf-8');
$num=-12;
var_dump((bool)$num);
echo '<br>';
$num2=12.6;
var_dump((int)$num2);
echo '<br>';
?>
0x03 使用函数转换
- intval():转为整形
<?php
$str='1234abc';
$a=intval($str);
echo $a;
echo gettype($a);
echo "<br />";
$str='a1234abc';
$a=intval($str);
echo $a;
echo gettype($a);
echo "<br />";
字符串转整形只取前面的数字,如果前面没有数字结果是0
- floatval():转成浮点型
<?php
$str='1234abc';
$a=floatval($str);
echo $a;
echo gettype($a);
echo "<br />";
$str='a1234abc';
$a=floatval($str);
echo $a;
echo gettype($a);
echo "<br />";
转换的规则和int类型一样,只不过类型不一样
- strval()转成字符型
<?php
$a=1234;
$str=strval($a);
echo $str;
echo gettype($str);
echo "<br />";
$a=0;
$str=strval($a);
echo $str;
echo gettype($str);
echo "<br />";
0x04 其他数据类型和bool转换
1、字符串转为bool类型
字符串为空和0时转换为false,其他都转为true
<?php
header('content-type:text/html;charset=utf-8');
//字符串转换
var_dump((bool)'abcd');
echo '<br>';
var_dump((bool)'');
echo '<br>';
var_dump((bool)'0');
echo '<br>';
var_dump((bool)'0.0');
echo '<br>';
var_dump((bool)'00');
echo '<br>';
var_dump((bool)'false');
echo '<br>';
var_dump((bool)"false");
echo '<br>';
var_dump((bool)'true');
echo '<br>';
var_dump((bool)"true");
echo '<br>';
var_dump((bool)'null');
echo '<br>';
var_dump((bool)"null");
echo '<br>';
var_dump((bool)'12abcd');
echo '<br>';
//数字和bool类型的转换
?>
注意:只有0是false,0.0、00就不是了
2、数字转为bool类型
数字只有值为0的情况为false,其他都是true
<?php
header('content-type:text/html;charset=utf-8');
var_dump((bool)0);
echo '<br>';
var_dump((bool)0.0);
echo '<br>';
var_dump((bool)00);
echo '<br>';
var_dump((bool)1);
echo '<br>';
var_dump((bool)-1);
echo '<br>';
?>
3、数组
数组只有创建时没有赋值时为false,其他为true
<?php
header('content-type:text/html;charset=utf-8');
var_dump((bool)array());
echo '<br>';
var_dump((bool)array(1));
echo '<br>';
?>
4、null
转为false
<?php
header('content-type:text/html;charset=utf-8');
var_dump((bool)null);
echo '<br>';
var_dump((bool)NULL);
echo '<br>';
?>