一、基础
PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。
变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。
- <?php
- $var = 'Bob' ;
- $Var = 'Joe' ;
- echo " $var , $Var " ; // 输出 "Bob, Joe"
- $ 4site = 'not yet' ; // 非法变量名;以数字开头
- $_4site = 'not yet' ; // 合法变量名;以下划线开头
- $i站点is = 'mansikka' ; // 合法变量名;可以用中文
二、预定义变量
PHP 提供了大量的预定义变量。由于许多变量依赖于运行的服务器的版本和设置,及其它因素,所以并没有详细的说明文档。一些预定义变量在 PHP 以命令行形式运行时并不生效。如下:
1. 超全局变量 — 超全局变量是在全部作用域中始终可用的内置变量
2. $GLOBALS — 引用全局作用域中可用的全部变量
3. $_SERVER — 服务器和执行环境信息
4. $_GET — HTTP GET 变量
5. $_POST — HTTP POST 变量
6. $_FILES — HTTP 文件上传变量
7. $_REQUEST — HTTP Request 变量
8. $_SESSION — Session 变量
9. $_ENV — 环境变量
10. $_COOKIE — HTTP Cookies
11. $php_errormsg — 前一个错误信息
12. $HTTP_RAW_POST_DATA — 原生POST数据
13. $http_response_header — HTTP 响应头
14. $argc — 传递给脚本的参数数目
15. $argv — 传递给脚本的参数数组
三、变量范围
变量的范围即它定义的上下文背景(也就是它的生效范围)。大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。
局部变量和全局变量;
- <?php
- $a = 1 ;
- function Test ()
- {
- echo $a ; //Notice: Undefined variable: a
- }
- Test ();
global 关键字:$GLOBALS 是一个超全局变量。
- <?php
- $a = 1 ;
- $b = 2 ;
- function Sum ()
- {
- global $a , $b ;
- $b = $a + $b ;
- }
- Sum ();
- echo $b ;//3
静态变量:变量范围的另一个重要特性是静态变量(static variable)。静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。
- <?php
- function test ()
- {
- static $a = 0 ;
- echo $a ;
- $a ++;
- }
- test();//0
- test();//1
四、可变变量
有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如:
- <?php
- $a = '付杰博客' ;
- $a='www.fujieace.com';
- $a='fujieace'
- echo $a; //fujieace
五、来自 PHP 之外的变量
1:HTML 表单(GET 和 POST)
当一个表单提交给 PHP 脚本时,表单中的信息会自动在脚本中可用;
2:IMAGE SUBMIT 变量名
当提交表单时,可以用一幅图像代替标准的提交按钮,当用户点击到图像中的某处时,相应的表单会被传送到服务器,并加上两个变量 sub_x 和 sub_y 。它们包含了用户点击图像的坐标。
3:HTTP Cookies
PHP 透明地支持 » RFC 6265定义中的 HTTP cookies。Cookies 是一种在远端浏览器端存储数据并能追踪或识别再次访问的用户的机制。可以用 setcookie() 函数设定 cookies。Cookies 是 HTTP 信息头中的一部分,因此 SetCookie 函数必须在向浏览器发送任何输出之前调用。
4:变量名中的点
通常,PHP 不会改变传递给脚本中的变量名。然而应该注意到点(句号)不是 PHP 变量名中的合法字符。至于原因,举例:
- <?php
- $varname . ext ; /* 非法变量名 */
这时,解析器看到是一个名为 $varname 的变量,后面跟着一个字符串连接运算符,后面跟着一个裸字符串(即没有加引号的字符串,且不匹配任何已知的健名或保留字)'ext'。很明显这不是想要的结果。
出于此原因,要注意 PHP 将会自动将变量名中的点替换成下划线。
5:确定变量类型
因为 PHP 会判断变量类型并在需要时进行转换(通常情况下),因此在某一时刻给定的变量是何种类型并不明显。PHP 包括几个函数可以判断变量的类型,例如: gettype() , is_array() , is_float() , is_int() , is_object() 和 is_string() ;