• php常量,提前定义常量,魔术常量及基本数据类型


    常量

    • 定义:

      • 形式一

        // define("PI",常量值);
        define("PI",3.14);
        define("school","讲理");
      • 形式二

        // 定义形式二
        const cc1 = 1234;
        const cc2 = "abcd";
    • 使用:

      • 形式一

        // 直接使用常量名
        echo "PI的值:".PI;
      • 形式二

        // 通过constant函数,灵活性体现-->常量名也能够变
        // 利用变量拼凑常量名)
        echo "PI的值:".constant("PI");

    ps:

    • 推断常量是否存在:使用defined(常量名)函数推断。
    • 使用一个没有定义的常量:在php中,当使用一个没有定义的变量和常量的时候都会报错。可是不会输出没有定义变量的值,会输出没有定义常量的值,其值就是常量名。

    提前定义常量

    • 定义:系统中预先定义好的一些常量,大约有几百个。我们仅仅须要知道当中几个即可:

      1. M_PI:        圆周率
      2. PHP_OS:      php执行所在的操作系统
      3. PHP_VERSION:   php版本
      4. PHP_INT_MAX:   php整数的最大值
        … 很多其它參考php手冊

    魔术常量

    • 定义:事实上仅仅是常量的形式。但没有常量的“恒常”,其值事实上会变化的,仅仅是非常少的几个:

      1. _FILE_ :代表当前网页文件的完整物理路径
      2. _DIR_ :代表当前网页文件所在的目录
      3. _LINE_ :代表当前这个变量名所在的“行号”

    数据类型

    • 整体划分:

      在php中有8中数据类型

    • 基本类型(标量类型)

      1. 整数类型:int integer。
      2. 浮点型类型: float,double,real。
      3. 字符串类型: string;
      4. 布尔类型: bool,boolean。

    • 复合类型:

      1. 数组:array;
      2. 对象:object。
    • 特殊类型:

      1. 空类型:null,这样的类型仅仅有一个数据,那就是null。
      2. 资源类型:resource,如数据库的连接资源。

    整数类型

    • 整数类型有4种写法:

      $n1 = 123; // 10进制写法
      $n2 = 0123; // 8进制写法
      $n3= 0x123; // 16进制写法
      $n4 = 0b11101 // 二进制写法
    • 进行转换:

      • 10进制转其它3种进制:

        1. decbin(一个10进制数字): 10_>2,返回的是二进制的字符串。
        2. decoct(一个10进制数字): 10->8,返回的是8进制的字符串。
        3. dechex(一个10进制数字): 10->16,返回的是16进制的字符串。
      • 其它3种进制转10进制

        1. bindec(一个二进制字符串): 2->10,返回的是10进制的字符串;
        2. octdec(一个八进制字符串): 8->10,返回的是10进制的;
        3. hexdec(一个十六进制字符串): 16->10,,返回的是10进制的。

    浮点类型:

    • 浮点数的两种表示形式:

      1. 常规写法

        v1 = 123.456
      2. 科学计数法:带一个特殊符号

        $v1 = 123.456E2 // 含义为:123.456乘以10的2次方,结果是浮点数
        $v2 = 123.456E3; // 含义为:123.456乘以10的3次方,结果是浮点数
        $v3 = 123E4; // 含义为:123乘以10的4次方,结果还是浮点数
    • 浮点数使用的细节:

      • 浮点数不应进行大小比較:

        1. 全部数字,终于的表示形式,都是二进制;
        2. 浮点数的二进制形式,不能全然表达准确。
        3. 因此浮点数的比較是不可靠的。

        解决的方法:将浮点数转换成整数(乘以10的多次方)再比較

      • 浮点数的小数部分可能无法用二进制精确表示;

      • 当整数的运算结果超出整数的表示范围为的时候。系统自己主动将结果转换成浮点型.

    字符串

    • 四种形式:

      $str1 = "字符串内容...";
      $str2 = '字符串内容...';
      $str3 = <<<"标识符A"
      字符串内容
      标识符A;
      $str4 = <<<"标识符B"
      字符串内容
      标识符B;
    • 单引號字符串:

      // 单引號字符串。=,须要转义或能够识别的转义符有:和'
      $str1 = 'abcdefg';
    • 双引號字符串:

      // 双引號字符串,须要转义或能够识别的特殊符号有:\,",
      ,
      (回车符),	(tab符),$。

      // 事实上就是取消了其在双引號字符串中的变量的“起始含义” $str2 = "abcdefg";

    • 双引號定界符字符串:

      // 双引號定界字符串,须要转义能够识别的特殊符号有:
      ,\,
      //
      ,	。双引號和单引號能够直接写出
      $str4=<<<"ABCD"
      abcdef,这里事实上就是字符串的内容
      ABCD;

      注意:

      1. 上述标识符是我们自己取得一个相似常量名的“名字”,能够任意;
      2. 该字符串的结束一行,仅仅能出现该标识符本身和一个分号。其它什么都不能够出现,包含空格;
      3. 上述标识符的双引號能够省略(不推荐);
      4. 标识符仅仅是一种形式,能够反复出现。

    • 单引號定界字符串:

      // 单引號定界字符串,没有须要转义或者能够识别的特殊字符
      $str3=<<<'ABCD'
      abcdef,这里事实上就是字符串的内容
      ABCD;

    布尔类型(仅仅有两个数据:true 或 false)

    • 单词:bool,boolean

    • 常见使用形式

      • 对变量直接作推断(參考手冊);

      • 定义一个变量,用作推断标识。

    类型转换

    • 自己主动转换:

      在不论什么运算中,假设须要某种类型的数据。而给出的数据不是该类型。通常都会发生自己主动类型转换,

      比方:octdec(),bindec()…

      在php中。算术运算符(包含-,*,/,%),就仅仅是对数值进行计算,如

      $sum = "1" + "2"; // sum的值就是3
    • 强制类型转换:

       自己主动类型转换时由”运算符“运算的时候决定的,而强制类型转换就是显示通过语法转换目标数据类型:

      // 形式为:(要转换的数据类型)数据
      $i = 10;
      $s = (string)$i;
      • 通常的转换目标类型有:(int),(float),(string),(bool),(array),(object)

      • 改变原来变量的数据类型:

         上述强制类型转换中,并不会改变该变量本身的数据类型。相应,有一个语法是直接改变原来变量的数据类型:

        settype($变量名,"目标类型");
    • 类型相关的函数:

      • var_dump():用于输出变量的”完整信息“。差点儿仅仅用于调试代码;
      • getType($变量名):获取该变量的类型名字,返回一个表示该类型的名字的字符串,比方:”string:,”bool”,”double”。

        。。。

      • setType($变量名,”目标类型“);
      • isset(),empty(),nuset()。
      • is_XX类型($变量名):系列函数,推断是否是某种数据类型
        1. is_int();
        2. is_string();
        3. is_bool();
        4. is_float();
        5. is_numeric();推断是否是一个数字
        6. is_scalar();推断是否是一个标量
        7. is_array();
        8. is_object();
        9. is_null();推断是否是空
  • 相关阅读:
    Leetcode 589. N-ary Tree Preorder Traversal
    Leetcode 912. Sort an Array
    Leetcode 1020. Number of Enclaves
    Leetcode 496. Next Greater Element I
    Leetcode 1019. Next Greater Node In Linked List
    Leetcode 503. Next Greater Element II
    Leetcode 1018. Binary Prefix Divisible By 5
    龟兔赛跑算法详解
    Leetcode 142. Linked List Cycle II
    Leetcode 141. Linked List Cycle
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/7073802.html
Copyright © 2020-2023  润新知