PHP的八种数据类型
四标、两复、两特殊
PHP是一种弱类型的语言,数据类型通常不需要程序员指定,PHP在运行时会自动判断。
四种标量类型
- integer (整型)
- float (浮点型包括double)
- string (字符串型)
- boolean (布尔型)
两种复合数据类型
- array (数组)
- object (对象)
两种特殊的数据类型
- resource (资源)
- NULL (NULL)
各类型详解
1.integer(整型)
32位的操作系统中,有效的数据范围在-2 147 483 648~+2 147 483 648(10位),超出最大范围将会当作float处理,这种情况叫做整数溢出。所以电话号码需要使用string来操作。
- ASCII码:一个英文字母1B,一个汉字2B
- UTF-8编码:一个英文字母1B,一个汉字3B
- Unicode编码:一个英文字母2B,一个汉字2B
2.float(浮点型)
在PHP中,float 和 bouble两者没有区别
- 浮点数据类型可以存储整数,也可以存储小数。
- 精度比整型要精确。
- 浮点型数据只是一个近似值,所以要避免浮点型数据之间的数值比较
3.string(字符串型)
字符串中的各个字符只占用1B
php中定义字符串有三种方式,分别是单引号(‘)、双引号(“)、界定符(<<<)
- 单引号和双引号不同在于,双引号可以解析引用的变量。
- 单引号比双引号效率要高,因为双引号要判断是否有变量要解析
- 转义字符
- \n 回车换行
- \t linux中是光标回到行首,还在本行
- \’ 转义单引号
- \” 转义双引号
- \转义 \
界定符用法:
echo <<<str
这里是要输出的字符串
str;
4.boolean(布尔型)
只有两个值,true和false
- 0、0.0、“0”、“”、定义未赋值的数组 boolean值也是false
5.resource (资源)
resource 又叫句柄,使用资源时系统会自动释放不再使用的资源,避免内存消耗殆尽,因此资源一般不需要手动释放
6.NULL (NULL)
三种情况变量是NULL :没有赋值、被赋值为NULL、被unset()销毁的变量
unset()函数没有返回值
7.array (数组)
PHP有两种数组 : 1. 数字索引数组 2.关联索引数组
- 数组输出打印两种方式
- print_r() 按照key-value输出
- var_dump() 类型加值输出
- 遍历数组两种方式
- foreach()
- list()
- 字符串和数组的转换
- array explode(string separator ,string string) 用sepatator 分离 string 转换成数组
- string implode(string glue , array pieces) 用glue 分隔符 将pieces转换为字符串
- 统计数组个数 : count()
- count() 统计的是一维数组的个数,二维数组递归的方式统计
- 两个数组合并为一个的两种方式
- ‘+’,如果两个数组中有相同的key,前面的会覆盖后面的;
- array_merge($a,$b) ,相同的key,后面的覆盖前面的
- 查询数据中指定元素 : array_search(mixed needle,array haystack)
- needle 在 haystack 中返回键名,否返回false
- 用于购物车中数量修改删除等
- array_pop(array array) 获取数组中最后一个元素,并在原数组中删除长度-1,数组为空返回null
array_push() 向数组尾部添加一个元素
- 即使数组中有字符串键名,您添加的元素也始终是数字键,
- 如果用 array_push() 来给数组增加一个单元,还不如用 $array[] =,因为这样没有调用函数的额外负担,
- 如果第一个参数不是数组,array_push() 将发出一条警告。这和 $var[] 的行为不同,后者会新建一个数组。
array_unique() 删除数组中重复的元素
8.object (对象)
面向对象编程OOP 两大重要的概念:类和对象 三大重要特点:封装性、继承性、多态性
- 实例化对象 使用关键字 new eg:$demo = new Demo() ;
- 声明常量 const PI = 3.1415926 ;
- 成员变量 和 成员方法 关键字:public(公共)、private(私有)、protected(保护) 、static(静态)
- 类 和 成员方法 关键字 final(最终)、abstract(抽象)、interface(接口)
- $this 和 ::(作用域操作符)
- $this->伪变量 : 在类的内部调用未实例化的方法,或用于声明一个全局变量
- :: 使用: 关键字 :: 变量名/常量名/方法名
- 关键字可以是:parent (父类)、self(当前类)、类名
- 魔术方法(__)
- __set() 程序试图写入一个不存在或者不可见的成员变量时,PHP会执行__set(),包含两个参数,变量名和变量值 不可省
- __get() 程序试图调用一个不存在或者不可见的成员变量时,PHP会执行__get(),该方法有一个参数,即要调用的参数名
- __call() 程序试图调用一个不存在的或不可见的成员方法时,PHP会执行__call(),包含两个参数,方法名和方法参数,方法参数是以数组形式存在
- __construct() 构造方法 每个类中默认会有一个构造方法 eg↓
class DemoController extends Controller{
public __construct(){
parent::__construct();
}
}
- 其他面向对象高级应用后续补充