二、常量及数据类型考点
剖析:PHP中字符串可以使用哪三种定义方法以及各自的区别是什么?
考点:PHP的字符串的定义方式及各自区别
答:定义方式:单引号、双引号、heredoc和newdoc
区别:
Ⅰ 单引号不解析变量
单引号不能解析转义字符,只能解析单引号和反斜线本身
变量和变量、变量和字符串、字符串和字符串之间可以用 . 连接
Ⅱ 双引号可以解析变量 , 变量可以使用特殊字符和{}包含
双引号可以解析所有转义字符
也可以使用 . 连接
Ⅲ heredoc是动态的 nowdoc是静态的
heredoc功能上类似多行的双引号 newdoc功能上类似多行的单引号
heredoc是一种专门处理大段字符串的通用处理方案,而nowdoc是php为了弥补动态实现“heredoc”的效率问题而实现的“高效率”的静态版本
注意:Ⅰ 单引号效率更高,例子如下
$sql = "SELECT * FROM user WHERE name = '$name'";(效率偏低)
$sql = "SELECT * FORM user WHERE name = \''.$name.'\''
Ⅱ heredoc例子如下
$str = <<<EOD Example of string spanning multiple lines using nowdoc syntax. EOD;//EOD一定要靠近前面,不能有空格,同时不要漏掉结束符分号;
Ⅲ newdoc例子如下
$str = <<<'EOD' Example of string spanning multiple lines using nowdoc syntax. EOD;//EOD一定要靠近前面,不能有空格,同时不要漏掉结束符分号;
Ⅳ heredoc和newdoc都用来处理大文本
延伸:数据类型及常量
数据类型:三大类——标量(整型、浮点型、布尔型、字符串)、复合(数组、对象)、特殊(NULL,资源)
注意:
Ⅰ 浮点类型不能用于比较运算(相等判断)中
Ⅱ FALSE的七种情况:0,0.0,'','0',false,array(),NULL
Ⅲ 超全局数组
① 包含了来自web服务器,客户端,运行环境和用户输入数据
② 这些数组比较特别
③ 全局范围内自动生效,都可以直接使用这些数组
④ 用户不能自定义这些数组,但这些数据操作方式又和我们自定义的数组操作方式一样
⑤ 在函数中直接可以使用这些数组
$_GET //经由URL请求提交至脚本的变量 $_POST //经由HTTP POST方法提交至脚本的变量 $_REQUEST //经由GET,POST和COOKIE机制提交到脚本的变量,因此该数组并不值得信任,尽量不去使用 $_FILES //经由HTTP POST文件上传而提交至脚本,文件处理一章,文件上传 $_COOKIE $_SESSION $_ENV //执行环境提交至脚本的变量 $_SERVER //变量由web服务器设定的,或直接和当前脚本的执行环境有关 $GLOBALS //只要是当前脚本有效的变量都在这里,数组键名为全局变量的名称
注意:$_SERVER相关知识点延伸
http://www.imooc.com/index.php/use/reg?status=ghost $_SERVER['SERVER_ADDR'] : 服务端IP地址 $_SERVER['REMOTE_ADDR'] : 客户端IP地址 $_SERVER['SERVER_NAME'] : 服务器名称 $_SERVER['REQUEST_TIME'] : 请求时间 $_SERVER['QUERY_STRING'] : URL地址中 ? 后面的所有(status=ghost) $_SERVER['HTTP_REFERER'] :上级请求页面 $_SERVER['HTTP_USER_AGENT'] : 返回头信息当中的用户相关信息 $_SERVER['REQUEST_URI'] : 当前脚本路径,根目录之后的目录(/index.php) $_SERVER['PATH_INFO'] : 当前脚本路径(use/reg)
Ⅳ NULL的三种情况:直接赋值为NULL,未定义的变量,unset销毁的变量
Ⅴ 常量定义:const、define
① const更快,是语言结构,define是函数
② const可以用于类常量的定义,define不行
③ 常量一经定义,不能修改或删除
注意:预定义常量
__LINE__ :返回文件中的当前行号。也可写成__line__。 __FILE__:返回当前文件的绝对路径(包含文件名)。 __DIR__:返回当前文件的绝对路径(不包含文件名),等价于 dirname(__FILE__)。 __FUNCTION__:返回当前函数(或方法)的名称。 __CLASS__:返回当前的类名(包括该类的作用区域或命名空间)。 __TRAIT__:返回当前的trait名称(包括该trait的作用区域或命名空间)。 __METHOD__:返回当前的方法名(包括类名)。 __NAMESPACE__:返回当前文件的命名空间的名称。