PHP常量和数据类型
引言
先用一个题来作为开端:PHP字符串的三种定义方式是什么?有什么区别?
它们分别是单引号'',双引号"",newdoc和heredoc。
区别是:单引号不能解析变量,不能解析转义字符,只能解析单引号和反斜线本身。
双引号可以 解析变量,可以解析所有的转义字符。
由此可见单引号的效率要高于双引号。在我们进行SQL语句的书写时可以利用这一点:
$sql = "sellect * from user where name = '$name'";//原SQL语句
$sql = 'sellect * from user where name =\''.$name.'\'';//这样效率会高一点,并且可读性也高一些
而heredoc类似于双引号,newdoc类似于单引号,两者都用来处理大文本
heredoc: $str = <<< EoT
........//里面的变量和转义字符会被解析
EoT
newdoc:$str = <<< 'EoT'
........
EoT
数据类型
三大数据类型:标量(布尔、字符串、整型、浮点型)、复合(数组、对象)、特殊(资源、NULL)。
标量中注意:浮点类型,它不能用于比较运算中,不要直接判断两个浮点类型的数值是否相等。
bool类型,false的七种情况:0、0.0、''、'0'、false、array()、null。
复合中注意:数组类型,超全局数组:$GLOBALS、$_GET $_POST $_REQUEST $_SESSION $_COOKIE $SERVER $_FILES $ENV,其中$GLOBALS包含了后面的所有内容,$_REQUEST包含了$POST $_GET $_COOKIE的内容,这里再着重讲解一些$_SERVER:
$_REQUEST['SERVER_ADDR']//服务器端IP
$_REQUEST['SERVER_NAME']//服务器名称
$_REQUEST['REQUEST_TIME']//请求时间
$_REQUEST['QUERY_STRING']//网址?后面的内容
$_REQUEST['HTTP_REFERER']//上级请求的页面
$_REQUEST['REMOTE_ADDR']//客户端IP
$_REQUEST['REQUEST_URI']//请求的index.php,返回的是/index.php
$REQUEST['PATH_INFO']//网址的路径部分
特殊中注意:NULL的三种情况:直接赋值为NULL、未定义的变量、unset销毁的变量。
常量
定义方式:const、define
const是结构,define是函数,const更快。
define不能定义类常量,const可以
常量一经定义,不能被修改,不能被删除
预定义常量:FILE LINE -DIR FUNCTION METHOD CLASS TRAIT NAMESPACE