05 数据类型与转换

一共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 
"; //1111011 echo "$nc8
"; //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
"; //1375 echo "$n8
"; //83 echo "$n16
"; //291 #题外话:echo "$n2
"还必须用双引号,单引不行,单引会将$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 . "
"; //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);

你可能感兴趣的:(05 数据类型与转换)