标记和注释、语句分隔符、变量、变量命名规则、预定义变量、可变变量、变量传值、常量、系统常量、数据类型、类型转换、类型判断、整数类型和进制、进制转换、浮点型、布尔型

一、标记与注释

  1. php是一种运行在服务器的脚本语言,可以嵌入HTML中
  2. php代码标记

    • ASP标记:<% php代码 %>,弃用,可以在配置文件中开启:asp_open_tag = off
    • 短标记:<? php代码 ?>,弃用,可以在配置文件中开启:short_open_tag = off
    • 脚本标记:<script laugague="php">php代码</php>,容易跟前端代码搞混了
    • 标准标记(常用):<?php php代码 ?>
  3. 注释:

    • 行注释://#
    • 块注释:/* 多行注释 */
    注释内容会在PHP解析的时候忽略

二、语句分隔符

  1. 语句分隔符:判断行的结束

    • 分号:;
    • 标记结束符?>有语句分隔符的效果,不建议
    php文档最后一个标记结束符通常省略,可以节省带宽(标记结束符后面的内容会当作html)

三、变量

  1. 变量:用来存储数据的一个容器,特点:

    • 存储数据
    • 有名字
    • 通过名字访问数据
    • 可以改变数据
  2. 变量使用:

    • 定义:在系统中添加变量名字(内存)
    • 赋值:把数据值赋给变量(定义的时候也可以进行赋值)
    • 访问数据
    • 修改数据
    • 删除变量:unset($var);

四、变量命名规则、预定义变量、可变变量

  1. 变量命名规则

    • 必须以$开头
    • 由字母、数字和下划线_构成,不能以数字开头
    • 允许中文变量,不建议
  2. 预定义变量(系统定义,都是数组)

    • $_GET:获取get方式提交的表单数据
    • $_POST:获取post方式提交的表单数据
    • $_REQUEST:获取GET和POST方式提交的表单数据
    • $_GLOBALS:PHP中所有的全局变量
    • $_SERVER:服务器信息
    • $_SESSION:session会话信息
    • $_COOKIE:cookie会话信息
    • $_ENV:环境信息
    • $_FILES:用户上传的文件信息
  3. 可变变量:一个变量保存的值是另一个变量的名字,可以直接通过一个变量访问另一个变量的值,加多一个$符号

    $a = 'b';
    $b = 'bb';
    echo $$a; // 输出:bb

五、变量传值

  1. 变量传值:将一个变量赋值给另一个变量

    • 值传递:复制一份值,传递另一个变量,两个变量没有关系
      php值传递内存运行图.jpg
    • 引用传递:将变量地址传递给另一个变量,两个变量指向同一数据(内存地址),指向同一个值
      $新变量 = &$旧变量;
      php引用传递内存运行图.jpg
  2. 内存分区

    • 栈区:程序可以操作的内存部分(不存数据,运行程序代码),速度快
    • 代码段:存储程序的内存部分(不执行)
    • 数据段:存储普通数据(全局区和静态区)
    • 堆区:存储复杂数据,大但效率低

六、常量

  1. 常量:const/constant,在程序运行中,不能改变的量(数据)
  2. 定义:

    • define('常量名','常量值');
    • const 常量名 = 常量值;,php5.3之后才有
    二者定义的常量访问权限有区别
  3. 命名规则:

    • 不需要使用$开头,否则会被识别为变量
    • 由字母、数字和下划线组成,不能以数字开头
    • 通常以大写字母为主(与变量区别开)
    • 比变量松散,可以使用一些特殊字符,该方式只能使用define定义

      define('-_-','smile');
      const -_- = smail; // 报错
  4. 使用:与变量一样,不能修改

    • 特殊字符的情况:访问常量的函数:constant('-_-');
  5. 常量和变量的使用情况

    • 数据可能会变化的,只能用变量
    • 数据不一定会变化的,可以用常量也可以用变量(变量居多)
    • 数据不允许被修改的,只能用常量

七、系统常量

  1. 常用的:

    • PHP_VERSION:PHP版本号
    • PHP_INT_SIZE:整型大小(字节)
    • PHP_INT_MAX:整型的最大值
    PHP中整型允许出现负数
  2. 魔术常量:双下划线 + 常量名 + 双下划线,会跟着环境变化,但是用户改不了

    • __DIR__:当前被执行脚本所在电脑的绝对路径
    • __FILE__:当前被执行脚本所在电脑的绝对路径(带文件名)
    • __LINE__:当前所属的行
    • __NAMESPACE__:当前所属的命名空间
    • __CLASS__:当前所属的类
    • __METHOD__:当前所属的方法

八、数据类型

  1. 数据类型:数据本身的类型

    php是弱类型语言,变量没有数据类型
  2. 分类:三大类八小类

    • 简单(基本)数据类型:

      • 整型:int/integer,4个字节,表示整数
      • 浮点型:float/double,8个字节,表示小数或整型存不下的数
      • 字符串类型:string,根据实际长度分配空间,表示字符串(引号)
      • 布尔类型:bool/boolean,表示布尔类型,只有两个值:truefalse
    • 复合数据类型:

      • 对象:object,存放对象(面向对象)
      • 数组:array,一次性存放多个数据
    • 特殊数据类型:

      • 资源类型:resource,存放资源数据(PHP外部数据:数据库、文件等)
      • 空类型:NULL,只有一个值:NULL,不能运算

九、类型转换

  1. 类型转换:将一个类型的数据转换成另外一个数据类型
  2. 方式:

    • 自动转换:系统自动转换,效率偏低
    • 强制转换(手动):在变量前加入括号,写上要转换成的数据类型,复制数据,不会改变数据本身
  3. 常用转换:

    • 转bool类型(判断),规则见下图红框
      PHP数据类型转bool类型规则.png
    • 转数值类型(算术计算)

      • 布尔true为1,false为0
      • 字符串转数值规则:

        • 以字符串开头的,永远为0
        • 以数字开头的,按照数字的格式从头开始提取数字(不能同时保护两个小数点)

十、类型判断

  1. 类型判断:通过一组函数进行判断,返回true或者false,格式:is_xxx(变量名称)

    bool类型不能用echo查看,可以使用var_dump查看
  2. 获取和设置变量数据类型

    • gettype(变量名):获取类型,返回类型字符串
    • settype(变量名,'数据类型'):设置类型,会改变数据本身

十一、整数类型和进制

  1. 整数类型:存储整数,4个字节,最大32位,42亿多,有符号,区分正负数
  2. 整型进制:4种

    • 十进制:$a = 120;,逢十进一,0-9
    • 二进制:$a = 0b110;,逢二进一,0-1
    • 八进制:$a = 0120;,逢八进一,0-7
    • 十六进制:$a = 0x120;,逢十六进一,0-9A-F
    php默认输出数值都显示十进制

十二、进制转换

  1. 进制转换:手动转换

    • 十进制转二进制:除二取余法
      除二取余法.jpg
    • 十进制转二进制:将数值写成2的N次方和的格式,取出最大的2的N次方,直到结果为0,没有的位置补0
    • 二进制转十进制:改写为2的N次方和的格式,求和
    系统整数占4个字节,不够的位置需要补0
  2. 进制转换函数:

    • decbin:十进制转二进制
    • decoct:十进制转八进制
    • dechex:十进制转十六进制
    • 其他格式以此类推

十三、浮点型和布尔型

  1. 浮点型:超过整型粗出范围,不保证精度,不超过15个有效数字

    $a = 1.23;
    $b = 1.23e10;
    $c = PHP_INT_MAX + 1; // 超过整型范围后编程浮点型
  2. 同样的字节数,为什么浮点数比整数可以表示更大的数?
    整型和浮点型存储格式.jpg
    浮点数的指数格式表示的数值更大
  3. 浮点数不精确,精确判断尽量不要用浮点数,计算机中的小数点存的基本上都不精确

    // 浮点数判断
    $a = 0.7;
    $b = 2.1;
    $c = $b / 3;
    var_dump($a == $c); // 输出false
  4. 布尔类型:只有2个值:truefalse,通常用于判断

    • 常用判断函数:emptyis_setin_null

标签: none

评论已关闭