一、数据类型
三个数据类型(标量、复合、特殊)
- 标量类型:
- 整型(int)
- 浮点型(float)
- 字符串(string)
- 布尔型(boolean)
- 复合类型:
- 对象(object)
- 数组(array)
- 特殊类型:
- 资源(resource)
- NULL
数据类型中的注意事项:
浮点型:浮点类型不能运用于比较运算中,精确的来说,不能用于相等的判断中。
$a = 0.1;
$b = 0.7;
if ($a + $b == 0.8) { // false = 0.79999....
}
由于
0.1
和0.7
在进行计算的时候,是交给 CPU 进行计算的,CPU在计算的时候,只能将其转为二进制。在转换为二进制的时候,会有一定的损耗,会转为010101...
的格式。对于0.1
和0.7
来说,0.1
在转换的时候,会转换为010101...
的格式,就会有损耗。有损耗的话, 我们0.1 + 0.7 = 0.799999...
,最终是得不到0.8
了, 损耗了0.00000.....1
。因此,浮点类型不能用于精确的相等的判断。
1、 布尔型:需掌握 FALSE的七种情况
- 整型 0;
- 浮点 0.0;
- 空字符串 ‘’;
- 零字符串 ‘0’;
- 布尔型 false;
- 空数组 array();
- NULL
2、 数组类型:考察 超全局数组
$GLOBALS; // 包含了后面的所有内容
$_GET
$_POST
$_REQUEST; // 包含了 $_GET、$_POST、$_COOKIE,【$_REQUEST尽量少用,它相当于一个万能钥匙,既可以接收 get/post/cookie,它的安全性偏低】
$_SESSION;
$_COOKIE;
$_SERVER;
$_FILES;
$_ENV;
3、$_SERVER
重点记忆:
$_SERVER['SERVER_ADDR']; // 服务器端的IP地址【重点考察】
$_SERVER['SERVER_NAME']; // 服务器名称
$_SERVER['REQUEST_TIME']; // 启动时间
$_SERVER['QUERY_STRING']; // 问号后面的内容(有可能为空)
$_SERVER['HTTP_REFERER']; // 上级请求的页面(从哪过来的,也可能为空,从网址请求过来的时候,为空)
$_SERVER['HTTP_USER_AGENT']; // 返回头信息中user_agent的信息
$_SERVER['REMOTE_ADDR']; // 客户端的IP地址【重点考察】
$_SERGER['REQUEST_URI']; // 比如我们请求的是 index.php,此时 URI为 /index.php
$_SERVER['PATH_INFO']; // 用来处理路由或处理框架中路由的功能(抓取的是URL地址中的路径部分,既不是前面的脚本的名称,也不是后面的 $_SERVER['QUEST_STRING'])【如:访问 http://www.imooc.com/index.php/use/reg?status=ghost,则抓取的是 use/reg?status=ghost】
4、NULL:三种情况
- 直接赋值为NULL;
- 未定义的变量;
- unset销毁的变量;
二、 常量
1、 定义
- const 更快,是语言结构;可以定义类常量;
- define 是函数;不能定义类常量;
注:常量一经定义,不能被修改,不能被删除;
2、预定义常量
__FILE__; // 返回文件的路径名 和 文件的名称
__LINE__; // 所在行的行号
__DIR__; // 所在目录
__FUNCTION__; // 所在函数体中的函数名称
__CLASS__; // 类名
__TRAIT__; // trait的名称(PHP 5.4起的一个特性)
__METHOD__; // 类名 + 方法名
__NAMESPACE__; // namespace的名称