• php学习----数据类型2


    Boolean 布尔类型

    这是最简单的类型。boolean 表达了真值,可以为 TRUEFALSE

    要明确地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。

    当转换为 boolean 时,以下值被认为是 FALSE

    Warning: -1和其它非零值(不论正负)一样,被认为是 TRUE

    exm:

    <?php
    var_dump((bool) "");        // bool(false)
    var_dump((bool) 1);         // bool(true)
    var_dump((bool) -2);        // bool(true)
    var_dump((bool) "foo");     // bool(true)
    var_dump((bool) 2.3e5);     // bool(true)
    var_dump((bool) array(12)); // bool(true)
    var_dump((bool) array());   // bool(false)
    var_dump((bool) "false");   // bool(true)
    ?> 

    Integer 整型

    integer 是集合 ? = {..., -2, -1, 0, 1, 2, ...} 中的某个数。

    整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。

    二进制表达的 integer 自 PHP 5.4.0 起可用。

    要使用八进制表达,数字前必须加上 0(零)。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b

    ​ PHP 不支持无符号的 integerInteger 值的字长可以用常量 PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量 PHP_INT_MAX 来表示,最小值可以在 PHP 7.0.0 及以后的版本中用常量 PHP_INT_MIN 表示。

    ​ PHP 中没有整除的运算符。1/2 产生出 float 0.5。 值可以舍弃小数部分,强制转换为 integer,或者使用 round() 函数可以更好地进行四舍五入。

    [round ]  对浮点数进行四舍五入

    <?php
    var_dump(25/7);         // float(3.5714285714286) 
    var_dump((int) (25/7)); // int(3)
    var_dump(round(25/7));  // float(4) 
    ?> 

    要明确地将一个值转换为 integer,用 (int)(integer) 强制转换。不过大多数情况下都不需要强制转换,因为当运算符,函数或流程控制需要一个 integer 参数时,值会自动转换。还可以通过函数 intval() 来将一个值转换成整型。

    resource 转换成 integer 时, 结果会是 PHP 运行时为 resource 分配的唯一资源号。

    Float 浮点型

    浮点型(也叫浮点数 float,双精度数 double 或实数 real)

    ​ 永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。 由于内部表达方式的原因,比较两个浮点数是否相等是有问题的。不过还是有迂回的方法来比较浮点数值的。

    要测试浮点数是否相等,要使用一个仅比该数值大一丁点的最小误差值。该值也被称为机器极小值(epsilon)或最小单元取整数,是计算中所能接受的最小的差别值。 a 和 b 在小数点后五位精度内都是相等的。

    <?php
    $a = 1.23456789;
    $b = 1.23456780;
    $epsilon = 0.00001;
    ​
    if(abs($a-$b) < $epsilon) {
        echo "true";
    }
    ?> 

    NaN

    某些数学运算会产生一个由常量 NAN 所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值(除了 TRUE)进行的松散或严格比较的结果都是 FALSE

    由于 NAN 代表着任何不同值,不应拿 NAN 去和其它值进行比较,包括其自身,应该用 is_nan() 来检查。

    is_nan

    (PHP 4 >= 4.2.0, PHP 5, PHP 7)

    is_nan — 判断是否为合法数值

    ​ bool is_nan ( float $val )

    如果 val 不是一个数字(not a number)返回 TRUE,否则返回 FALSE

    Example #1 is_nan() 例子

    <?php
    // Invalid calculation, will return a 
    // NaN value
    $nan = acos(8);
    ​
    var_dump($nan, is_nan($nan));
    ?> 

    以上例程会输出:

    float(NAN)
    bool(true) 

    String 字符串

    一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode

    1、单引号

    ​ 定义一个字符串的最简单的方法是用单引号把它包围起来(字符 ')。

    ​ 要表达一个单引号自身,需在它的前面加个反斜线(*)来转义。要表达一个反斜线自身,则用两个反斜线(*)。其它任何方式的反斜线都会被当成反斜线本身:也就是说如果想使用其它转义序列例如 或者 ,并不代表任何特殊含义,就单纯是这两个字符本身。

    Note: 不像双引号heredoc 语法结构,在单引号字符串中的变量和特殊字符的转义序列将不会被替换。

    2、双引号

    ​ 如果字符串是包围在双引号(")中, PHP 将对一些特殊的字符进行解析:

    序列 含义
    换行(ASCII 字符集中的 LF 或 0x0A (10))
    回车(ASCII 字符集中的 CR 或 0x0D (13))
    水平制表符(ASCII 字符集中的 HT 或 0x09 (9))
    v 垂直制表符(ASCII 字符集中的 VT 或 0x0B (11))(自 PHP 5.2.5 起)
    e Escape(ASCII 字符集中的 ESC 或 0x1B (27))(自 PHP 5.4.0 起)
    f 换页(ASCII 字符集中的 FF 或 0x0C (12))(自 PHP 5.2.5 起)
    反斜线
    $ 美元标记
    " 双引号
    [0-7]{1,3} 符合该正则表达式序列的是一个以八进制方式来表达的字符
    x[0-9A-Fa-f]{1,2} 符合该正则表达式序列的是一个以十六进制方式来表达的字符

    和单引号字符串一样,转义任何其它字符都会导致反斜线被显示出来。PHP 5.1.1 以前, {$var}中的反斜线还不会被显示出来。

    ​ 用双引号定义的字符串最重要的特征是变量会被解析

    ​ 直接把 arrayobjectresource 转换成 string 不会得到除了其类型之外的任何有用信息。可以使用函数 print_r()var_dump() 列出这些类型的内容。

    3、Heredoc结构和Nowdoc结构参考php文档

    变量解析

    ​ 当字符串用双引号或 heredoc 结构定义时,其中的变量将会被解析。

    ​ 这里共有两种语法规则:一种简单规则,一种复杂规则。简单的语法规则是最常用和最方便的,它可以用最少的代码在一个 string 中嵌入一个变量,一个 array 的值,或一个 object 的属性。

    ​ 复杂规则语法的显著标记是用花括号包围的表达式。

    php中ascll与字符的转换

    ord

    (PHP 4, PHP 5, PHP 7)

    ord — 返回字符的 ASCII 码值

    说明

    int ord ( string $string )

    返回字符串 string 第一个字符的 ASCII 码值。

    chr

    (PHP 4, PHP 5, PHP 7)

    chr — 返回指定的字符

    说明

    string chr ( int $ascii )

    返回相对应于 ascii 所指定的单个字符。

    数组

    可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键(key) => 值(value)对。

    array(  key =>  value
         , ...
         )
    // 键(key)可是是一个整数 integer 或字符串 string
    // 值(value)可以是任意类型的值

    ​ 最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中,例如常用 array(1, 2) 而不是 array(1, 2, )。对多行数组定义通常保留最后一个逗号,这样要添加一个新单元时更方便。 key 可以是 integer 或者 string。value 可以是任意类型。

    ​ 应该始终在用字符串表示的数组索引上加上引号。例如用 $foo['bar'] 而不是 $foo[bar]

    ​ 这并不意味着总是给键名加上引号。用不着给键名为常量变量的加上引号,否则会使 PHP 不能解析它们。

    魔术常量

    __ LINE __ 文件当中的行号

    __ FILE __ 文件的完整路径和文件名

    __ FUNCTION __ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

    __ CLASS__ 类的名称(PHP 4.3.0 新加)自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。

    __ METHOD __ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

  • 相关阅读:
    独角戏
    开源引擎
    如何实现一个UI系统
    VC编程规范—程序员应该这样写代码
    夕阳下的熊猫香[转]
    在桌面上显示屏保
    在WinSock上使用IOCP
    结构体对齐的具体含义(#pragma pack)
    一个程序员的奋斗
    让汇编揭开死循环的神秘面纱
  • 原文地址:https://www.cnblogs.com/zw1sh/p/10181468.html
Copyright © 2020-2023  润新知