PHP数据类型转换分为自动转换(隐式转换)和强制转换(显示转换),强制转换又分为临时转换和永久转换。
自动转换(隐式转换)
程序会根据上下文环境自动进行转换
其它类型转换成数值型
-
- true>-1
- false>-0
- null>-0
- 字符串以非法数值开始>-0
- 字符串以合法数值开始,一直取到第一个非法数值结束
其它类型转换成字符串型
- 数值型直接转换成数值本身
- true>-1
- false>-空字符串
- null>-空字符串
- 数组>-Array
- 资源>-Resource
其它类型转换成布尔型
- 0>-false
- 0.0>-false
- 空字符串“或者”或者“0”或者“0”>-false
- null>-false
- 空数组array()>-false
<?php
//其它类型转换成数值型
echo 1+2;//3
echo 1+2.3;//3.3
echo 1+true;//2 true>-1
echo 1+false;//1 false>-0
echo 1+null;//1 null>-0
echo 1+"3xuxiaoke";//4 3xuxiaoke>-3
echo 1+"2a3b4c";//3 2a3b4c>-2
echo 1+"2e2a2c";//201 2e2a2c>-200 2e=2*10的平方
echo 1+"true";//1 "true">-0
//其它类型转换成字符串
echo "xuxiaoke"; //xuxiaoke
echo 123; //123
echo 2.34; //2.34
echo true; //1
echo false; //
echo null; //
//其它类型转换成布尔类型
//找出转换成布尔类型假的有哪些情况,其它都会转换成布尔类型的true
if (true) {
echo "我在北京二环买一套别墅";
}else{
echo "还是老老实实编码";
}
强制转换(显示转换)
<?php
//临时转换
$var = true;
var_dump($var);
$res = (int)$var;
var_dump($res);
var_dump((int)$var, (integer)$var);
echo "<br>";
//临时转换成浮点型
var_dump((float)$var, (double)$var, (real)$var);
echo "<br>";
$var = 3.6;
//舍掉小数部分
var_dump((int)$var, (integer)$var);
echo "<br>";
//临时转换成字符串型
$var = true;
var_dump((string)$var);
echo "<br>";
//临时转换成布尔类型
$var = "3xuxiaoke";
var_dump((bool)$var, (boolean)$var);
echo "<br>";
//临时转换成空
$var = "空";
var_dump((unset)$var);
echo "<br>";
//临时转换成数组
$var = 123;
var_dump((array)$var);
echo "<br>";
//临时转换成对象
$var = 12.3;
var_dump((object)$var);
echo "<br>";
//通过系统函数完成临时转换
$var = "3xuxiaoke";
$res = intval($var);
var_dump($res);
echo "<br>";
var_dump(floatval($var), doubleval($var));
echo "<br>";
echo "<hr/>";
//永久转换
//得到数据类型
$var = 123;
var_dump($var);
echo "<br>";
echo gettype($var);
echo "<br>";
$var = true;
echo gettype($var);
echo "<hr/>";
$var = 123;
var_dump($var);
echo "<br>";
settype($var, "boolean");
var_dump($var);
echo "<br>";
/*type 的可能值为:
“boolean” (或为“bool”,从 PHP 4.2.0 起)
“integer” (或为“int”,从 PHP 4.2.0 起)
“float” (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用)
"string"
"array"
"object"
“null” (从 PHP 4.2.0 起)*/
$var = "3xuxiaoke";
settype($var, "int");
var_dump($var);
发表评论