[TOC]
>[success]PHP 支持 8 种原始数据类型。
## PHP数据类型
**四种标量类型:**
1. boolean(布尔型)
2. integer(整型)
3. float(浮点型,也称作 double)
4. string(字符串重点)
>[danger]标量可以理解为:是数据结构中最基本单元,只能储存一个数据
**两种复合类型:**
1. array(数组重点)
2. object(对象重点)
**最后是两种特殊类型:**
1. resource(资源)
2. NULL(无类型)
## Boolean 布尔类型
这是最简单的类型。boolean 表达了真值,可以为 TRUE 或 FALSE。
**语法**
要指定一个布尔值,使用关键字 TRUE 或 FALSE。两个都不区分大小写。
~~~
$foo = True; // assign the value TRUE to $foo
?>
~~~
当转换为 boolean 时,以下值被认为是 FALSE:
1. 布尔值 FALSE 本身
2. 整型值 0(零)
3. 浮点型值 0.0(零)
4. 空字符串,以及字符串 "0"
5. 不包括任何元素的数组
6. 不包括任何成员变量的对象(仅 PHP 4.0 适用)
7. 特殊类型 NULL(包括尚未赋值的变量)
8. 从空标记生成的 SimpleXML 对象
9. 所有其它值都被认为是 TRUE(包括任何资源)。
## Integer 整型
一个 integer 是集合 ? = {..., -2, -1, 0, 1, 2, ...} 中的一个数。前面可以加上 可选的符号(- 或者 +)
## Float 浮点型
浮点型(也叫浮点数 float,双精度数 double 或实数 real),简单理解为带小数点的数值类型,可以用以下任一语法定义:
~~~
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
?>
~~~
## String 字符串 (重点)
一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。
语法
**一个字符串可以用 3 种方式表达:**
1. 单引号
2. 双引号
3. 定界符
~~~
$str = '学并思';
$str = "学并思";
$str = <<
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
~~~
>[danger]注意:字符如果由双引号括起来,里面有变量,可以进行解析。
## NULL
特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。
在下列情况下一个变量被认为是 NULL:
1. 被赋值为 NULL。
2. 尚未被赋值。
3. 被 unset()。
>[danger]其它数据类型后面讲。
## 取得和判断数据类型
gettype | — 获取变量的类型 |
is_array | — 检测变量是否是数组 |
is_bool | — 检测变量是否是布尔型 |
is_double | — is_float 的别名 |
is_float | — 检测变量是否是浮点型 |
is_int | — 检测变量是否是整数 |
is_integer | — is_int 的别名 |
is_long | — is_int 的别名 |
is_null | — 检测变量是否为 NULL |
is_numeric | — 检测变量是否为数字或数字字符串 |
is_object | — 检测变量是否是一个对象 |
is_real | — is_float 的别名 |
is_resource | — 检测变量是否为资源类型 |
is_scalar | — 检测变量是否是一个标量 |
is_string | — 检测变量是否是字符串 |
## 类型转换
settype | bool settype ( mixed &$var , string $type ) | 设置变量的类型 |
intval | int intval ( mixed $var [, int $base = 10 ] ) | 获取变量的整数值 |
floatval | float floatval ( mixed $var ) | 获取变量的浮点值 |
strval | string strval ( mixed $var ) | 获取变量的字符串值 |
>[danger]练习: 检测通过路径传参获取的数据是什么类型,并且打印出来。