1.2PHP基础-常量以及数据类型

// php中字符串可以使用哪三种方法以及各自的区别是什么?

// 定义方式:
// 单引号
//     单引号不能解析变量,
//     单引号不能解析转义字符,只能解析单引号和反斜线本身
//     变量和变量、变量和字符串、字符串和字符串之间可以用.连接
//     单引号的效率高于双引号
// 双引号
//     双引号可以解析变量,变量可以使用特殊字符串和{}包含
//     双引号可以解析所有的转义字符
//     也可以使用.连接


$str = 'abcdef';
$a = 8;
$str2 = "abcd'{$a}'f"''
//str2 的值是 abcd8f 双引号中的单引号中的变量会解析
//再例如:
// $sql = "SELECT * FROM user WHERE name='$name'";
// 优化后
// $sql = 'SELECT * FROM user WHERE name=\''.$name.'\'';
// 
// heredoc和newdoc
// 两者都是用来处理大文本
// heredoc类似于双引号

$str = <<<eot
sfsfsdfdsf
sdfd
sfds
fs
eot;

// newdoc类似于单引号
$str = <<<'eot'
sfsfsdfdsf
sdfd
sfds
fs
eot;

八大数据类型
四种标量类型: 
•boolean(布尔型) 
•integer(整型) 
•float(浮点型,也称作 double) 
•string(字符串) 
三种复合类型: 

•array(数组) 
•object(对象) 
•callable(可调用) 
最后是两种特殊类型: 

•resource(资源) 
•NULL(无类型) 
为了确保代码的易读性,本手册还介绍了一些伪类型: 

•mixed(混合类型) 
•number(数字类型) 
•callback(回调类型,又称为 callable) 
•array|object(数组 | 对象类型) 
•void (无类型) 

1.浮点数的精度问题。

浮点数的精度问题有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。 
此外,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118...。 
所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。


2.布尔类型的false的其中情况
当转换为 boolean 时,以下值被认为是 FALSE: 
•布尔值 FALSE 本身 
•整型值 0(零) 
•浮点型值 0.0(零) 
•空字符串,以及字符串 "0" 
•不包括任何元素的数组 
•特殊类型 NULL(包括尚未赋值的变量) 
•从空标记生成的 SimpleXML 对象 

3.超全局数组
$GLOBALS、$_GET、$_POST、$_REQUEST、$_SESSION、
$_COOKIE、$_SERVER、$_FILES、$_ENV
$GLOBALS包含了后边所有的内容
$_REQUEST包含了$_GET、$_POST、$_COOKIE
$_REQUEST尽量少用,安全性偏低

3.超全局数组$_SERVER

// 例子:
http://localhost/mianshi/2/2-2code.php/uu/yy/?m=index&a=action#qwe

    [PHP_SELF] => /mianshi/2/2-2code.php
    [SERVER_NAME] => localhost
    [REQUEST_METHOD] => GET
    [REQUEST_TIME] => 1574320395
    [REQUEST_URI] => /mianshi/2/2-2code.php?m=index&a=action
    [HTTP_REFERER] => 
    [QUERY_STRING] => m=index&a=action
    [SERVER_ADDR] => 127.0.0.1
    [REMOTE_ADDR] => 127.0.0.1
    [DOCUMENT_ROOT] => E:/phpStudy/PHPTutorial/WWW
    [SCRIPT_NAME] => /mianshi/2/2-2code.php
    [PATH_INFO] => /uu/yy/


$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关。
$_SERVER['SERVER_NAME'] #当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。 
$_SERVER['REQUEST_METHOD'] #访问页面时的请求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。
$_SERVER['REQUEST_TIME'] #请求开始时的时间戳。从 PHP 5.1.0 起可用。
$_SERVER['REQUEST_URI'] #访问此页面所需的 URI。例如,“/index.html”。
$_SERVER['HTTP_REFERER'] #链接到当前页面的前一页面的 URL 地址。 直接打开没有此值。
$_SERVER['QUERY_STRING'] #查询(query)的字符串。
$_SERVER['SERVER_ADDR'] #服务器的 IP 地址。
$_SERVER['REMOTE_ADDR'] #正在浏览当前页面用户的 IP 地址,客户端IP。
$_SERVER['DOCUMENT_ROOT'] #当前运行脚本所在的文档根目录。在服务器配置文件中定义。
$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。
$_SERVER['PATH_INFO'] #包含由客户端提供的、跟在真实脚本名称之后并且在查询语句(query string)之前的路径信息,如果存在的话。例如,如果当前脚本是通过 URL http://www.example.com/php/path_info.php/some/stuff?foo=bar 被访问,那么 $_SERVER['PATH_INFO'] 将包含 /some/stuff。 
'ORIG_PATH_INFO'

$_SERVER['HTTP_ACCEPT'] #当前请求的 Accept: 头部的内容。
$_SERVER['HTTP_ACCEPT'] #当前请求的 Accept: 头部的内容。
$_SERVER['HTTP_ACCEPT_CHARSET'] #当前请求的 Accept-Charset: 头部的内容。例如:“iso-8859-1,*,utf-8”。
$_SERVER['HTTP_ACCEPT_ENCODING'] #当前请求的 Accept-Encoding: 头部的内容。例如:“gzip”。
$_SERVER['HTTP_ACCEPT_LANGUAGE']#当前请求的 Accept-Language: 头部的内容。例如:“en”。
$_SERVER['HTTP_CONNECTION'] #当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。
$_SERVER['HTTP_HOST'] #当前请求的 Host: 头部的内容。
$_SERVER['HTTP_USER_AGENT'] #当前请求的 User_Agent: 头部的内容。
$_SERVER['HTTPS'] — 如果通过https访问,则被设为一个非空的值(on),否则返回off

$_SERVER['REMOTE_HOST'] #正在浏览当前页面用户的主机名。
$_SERVER['REMOTE_PORT'] #用户连接到服务器时所使用的端口。
$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。
$_SERVER['SERVER_PROTOCOL'] #请求页面时通信协议的名称和版本。例如,“HTTP/1.0”。


4.NULL的三种情况
直接赋值为NULL
未定义的变量
unset销毁的变量

5.常量定义:
const、define
const更快,是语言结构;define是函数
define不能用于类常量的定义,const可以
常量一经定义,不能修改,不能被删除

6.预定义常量
__LINE__ 文件中的当前行号 
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。 
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。 
__FUNCTION__ 函数名称 
__CLASS__ 类的名称
__TRAIT__ Trait 的名字 
__METHOD__ 类的方法名 
__NAMESPACE__ 当前命名空间的名称 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值