一共8种类型。
基本类型4种
整型(int,integer)
1.4种写法
$n1 = 123 //10进制
$n2 = 0123 //8进制
$n3 = 0x123 //16进制
$n4 = 0b123 //2进制
2.进制转换
bin二进制,oct八进制,dec10进制,hex十六进制。只有2种转换,10进制转其他,其他转10进制。不能任意组合转,8进制转2进制之类的是不存在的
10进制转其他(输进数字,返回的都是字符串!字符串!)
$n = 123;
$nc2 = decbin($n); //10进制转2进制
$nc8 = decoct($n); //10进制转8进制
$nc16 = dechex($n); //10进制转16进制
echo "$nc2 <br/>"; //1111011
echo "$nc8 <br/>"; //173
echo "$nc16"; //7b
其他转10进制(输进字符串!字符串!返回字符串!)
$n2_10 = bindec('10111'); //2进制转10进制
$n8_10 = octdec('123'); //8进制转10进制
$n16_10 = hexdec('123'); //16进制转10进制
如果你在代码种写2进制、8进制、16进制形式的数,echo出来会自动转换成10进制输出的
$n2 = 0b10101011111;
$n8 = 0123;
$n16 = 0x123;
echo "$n2<br>"; //1375
echo "$n8<br>"; //83
echo "$n16<br>"; //291
#题外话:echo "$n2<br>"还必须用双引号,单引不行,单引会将$n2当作字符串解释0.0
补充一个转换题加深理解
转换题.PNG
浮点型(float,double,real)
1.2种写法
//直接写
$v1 = 123.123;
//科学计数法,带一个特殊符号E,凡是这种写法的无论实际大小,都是浮点型
$v2 = 123.123E2 //即12312.3
$v3 = 123.123E3 //即123123,仍然为浮点型
$v4 = 123E3 //即123000,浮点型
2.浮点数使用细节
- 浮点数不应该比较大小!浮点数不应该进行大小比较!浮点数不应该进行大小比较!(2进制缺陷,大多数浮点数表达不能完全准确,只能以很高的精度、接近理论值的值进行比较。真想比较两个浮点型的大小,结合所要求的精度转化后再进行比较)
比较8.1/3和2.7的大小
//精度要求为4
if(round(8.1/3 * 10000) == round(2.7 * 10000)){
echo ''相等!''
}
- 浮点型转2进制,乘以2按顺序取整数部分就可以了
- 当整数的运算结果超出整数的范围之后,会自动转换成浮点型
$v = 10000;
$m1 = $v * $v;
$m2 = $m1 * $m1 * $m1;
echo PHP_INT_MAX . "<br>"; //9223372036854775807
var_dump($m1); //int(100000000)
var_dump($m2); //float(1.0E+24)
字符串(string)
1.双引号字符串:可以识别预定义的$符和tab
2.单引号字符串:不能识别$符
3.双引号定界符字符串
这种方法定义一个字符串的时候,最后一行,只能是标识符和分号,其他什么都不能有!包括空格!
$str = <<<"abcd" //这是标识符,自己定义的
这是双引号定界符字符串!
abcd;
echo $str;
4.单引号定界符字符串:写法和双引号定界符字符串类似,但是它没有任何转义字符。
布尔型(bool,boolean)
记住几个特殊的就行了,0、"0"、""、null、空数组、空对象、未定义变量 都是 false, 其余是 true。
复合类型2种
数组(array)
对象(object)
特殊类型2种
空类型(null)
资源类型(resource),如数据库,每一种资源都要另外学习的
数据类型转换
当然也分自动转换(基本都是数学运算符导致)和强制转换啦。
强制转换
1.通常的转换目标类型是(转对象那个貌似作用不大?) (int)、(float)、(string)、(bool)、(array)、(object)
$v = 123;
$m1 = (float)$v; //转成浮点类型
$m2 = (string)$v; //转成字符串类型
2.用方法 setType() 进行转换
$v = 123;
setType($v, "string");
3.专门方法转换
intval()、floatval()、strval()
$v = 123;
$m1 = floatval($v);
$m2 = strval($v);
$a = "123";
$a1 = intval($v);
网友评论