美文网首页17.11 PHP入门
05 数据类型与转换

05 数据类型与转换

作者: 海野夏桑 | 来源:发表于2017-12-08 15:50 被阅读8次

    一共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);
    

    相关文章

      网友评论

        本文标题:05 数据类型与转换

        本文链接:https://www.haomeiwen.com/subject/sjurixtx.html