为了账号安全,请及时绑定邮箱和手机立即绑定

复习PHP-语言参考-变量

标签:
PHP

1.变量的形式为:

[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

即:a-z,A-Z,以及 ASCII 字符从 127 到 255(0x7f-0xff)。

$this 保留不可用。

引用赋值前加&号,与C++语法一样呢。

判断是否初始化可用isset

2.预定义变量

注意:register_globals开启时会将很多超全局数组自动生成变量如$_GET,$_SERVER中的元素,很垃圾,PHP6会删除它的,所以不用研究。

-----------------------------------

$GLOBALS:引用全局作用域中可用的全部变量

好东西啊,找不到定义了哪些变量或当前作用域可使用哪些变量都可以用此超全局变量,查询和使用。

-----------------------------------

$_SERVER:服务器和执行环境信息

包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。

元素讲解:(注意在命令行时,其中的部分可能失效)

PHP_SELF:当前执行脚本的文件名

argv:传递给该脚本的参数数组(命令行时传递C语言命令行样式参数,GET时传递querystring)

GATEWAY_INTERFACE:服务器使用的CGI规范版本

SERVER_ADDR:服务器IP地址

SERVER_NAME:服务器主机名

SERVER_SOFTWARE:服务器标识字符串,在响应请求时的头信息给出

SERVER_PROTOCOL:请求页面时通信协议的名称和版本例如,“HTTP/1.0”

REQUEST_METHOD:访问页面时使用的请求方法,如GET,POST,HEAD,PUT(如果请求方法为 HEAD,PHP 脚本将在发送 Header 头信息之后终止(这意味着在产生任何输出后,不再有输出缓冲))

REQUEST_TIME:请求开始的时间戳

REQUEST_TIME_FLOAT:楼上微秒级别的精度

QUERY_STRING:就是querystring

DOCUMENT_ROOT:当前脚本所在的文档根目录(在服务器配置文件中自定义)

HTTP_ACCEPT:当前请求头中,客户端支持的返回文件类型

HTTP_ACCEPT_CHARSET:当前请求中,客户端支持的字符集

HTTP_ACCEPT_ENCODING:当前请求中,客户端支持的编码

HTTP_ACCEPT_LANGUAGE:当前请求中,客户端支持的语言

HTTP_CONNECTION:当前请求中,客户端与服务端保持通信的方式,如keep-alive(持续有效)

HTTP_HOST:当前请求中,客户端访问的域名

HTTP_REFERER:当前请求中,客户端上一页来源(但不可信,只作参考,不可作用关键判断依据)

HTTP_USER_AGENT:当前请求中,客户端信息(浏览器版本啊之类的),可用get_browser请求(不推荐,需要在服务器上建一个库文件,然后在PHP.INI里指向),可在网上找一个browser库,更方便

HTTPS:如果脚本是通过 HTTPS 协议被访问,则被设为一个非空的值

REMOTE_ADDR:用户的IP地址

REMOTE_HOST:主机名

REMOTE_PORT:客户端连接到服务器的端口号

REMOTE_USER:经验证的用户(不明白,暂时没找到详解)

REDIRECT_REMOTE_USER:验证的用户(不明白,暂时没找到详解)

SCRIPT_FILENAME:当前执行脚本的绝对路径

SERVER_ADMIN:服务器配置文件中的信息,没啥用感觉

SERVER_PORT:服务器使用的端口,如果使用 SSL 安全连接,则这个值为用户设置的 HTTP 端口

SERVER_SIGNATURE:包含了服务器版本和虚拟主机名的字符串(我在WAMP下默认显示的是空的)

PATH_TRANSLATED:当前脚本所在文件系统(非文档根目录)的基本路径。这是在服务器进行虚拟到真实路径的映像后的结果。注意:若 Apache 不生成此值,PHP 便自己生成并将其值放入 SCRIPT_FILENAME 服务器常量中。这个修改遵守了 CGI 规范,PATH_TRANSLATED 仅在 PATH_INFO 被定义的条件下才存在。 Apache 2 用户可以在 httpd.conf 中设置 AcceptPathInfo = On 来定义 PATH_INFO。

SCRIPT_NAME:包含当前脚本的路径(如访问abc.com显示的是/index.php)

REQUEST_URI:URI 用来指定要访问的页面。例如 “/index.html”

PHP_AUTH_USER:HTTP认证通过后自动产生的变量

PHP_AUTH_PW:HTTP认证通过后自动产生的变量

AUTH_TYPE:HTTP认证的类型

PATH_INFO:包含由客户端提供的、跟在真实脚本名称之后并且在查询语句(query string)之前的路径信息

ORIG_PATH_INFO:PATH_INFO的原始版本

-----------------------------------

$_GET:HTTP 通过GET 后URL参数传递给当前脚本的变量数组

提示:数据是经过urldecode后传递的,数据长度一般不超过2KB。

-----------------------------------

$_POST:HTTP 通过POST 后传递给当前脚本的变量数组

注意:字符串型的数据最好经过htmlspecialchars后再输出。

-----------------------------------

$_FILES:HTTP 通过POST上传到当前脚本的项目数组

-----------------------------------

$_REQUEST:包含$_GET,$_POST,$_COOKIE的数组

5.3引入了request_order控制,我感觉$_REQUEST没啥用吧?~

-----------------------------------

$_SESSION:当前脚本可用的SESSION变量的数组

详细的会在后面的复习函数参考-SESSION扩展里讲解

-----------------------------------

$_ENV:通过环境方式传递给当前脚本的变量的数组。

-----------------------------------

$_COOKIE:可用setcookie Send a cookie

-----------------------------------

$php_errormsg:返回上一个错误

此预定义变量在如远程下载文件时,移动文件等需要隐藏错误的(@)时非常有用,这样程序员可以在不影响程序运行的情况下知道哪里出错了。

注意:默认为未定义,所以需要isset判断一下。

-----------------------------------

$HTTP_RAW_POST_DATA:原生POST数据,如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS[\'HTTP_RAW_POST_DATA\']来接收,比如 text/xml 或者 soap ,还有一种办法获取原始数据file_get_contents(“php://input”,”r”)

注意:如果提示未定义,需要开启PHP.ini中的always_populate_raw_post_data

-----------------------------------

$http_response_header:HTTP响应头信息,使用之前需要判断是否存在,当存在时,它将是一个局部变量。

-----------------------------------

$argv和$argc:命令行运行时接受的参数

如命令行为php xxx.php a b c 在PHP文件 中打印这两个预定义变量就知了。

3.变量的范围

在函数内部使用外部变量需要global一下,或者直接用$GLOBALS超全局变量

静态变量在离开作用域后仍存在,可用于递归

例:

function test()
{
   static $a = 0;
   echo $a;
   $a++;
}
test();
test();

这里将会输出01

注意:这里的$a仍是一个局部静态变量,且第二次不会被初始化。

注意:静态变量不能被赋值为一个表达式,否则会报错。

4.可变变量

$a=”hello”;

$$a=”world”; // or ${$a}=”world”;

{}在这时有助于让解析器理解我的最终目的,如:

$$a[1] 将会混淆,所以${$a[1]}或者${$a}[1]才是最科学的写法

类成员$a->$b;

花括号来给属性名清晰定界

注意:超全局变量和$this都不能作为可变变量

5.来自PHP外的变量

如:发送给客户端的COOKIE变量

注意:图片按钮点击后PHP会接收鼠标的点击坐标,这个略好略好。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消