初始化变量
PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。
变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。按照正常的正则表达式,它将被表述为:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。
引用变量
PHP 也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用(换言之,“成为其别名” 或者 “指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。
大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。
global 超全局标量类似于$_SERVER
在函数中声明了全局变量 $a 和 $b 之后,对任一变量的所有引用都会指向其全局版本。对于一个函数能够声明的全局变量的最大个数,PHP 没有限制。
static 静态变量
变量范围的另一个重要特性是静态变量(static variable)。静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。
//变量 $a 仅在第一次调用 test() 函数时被初始化,之后每次调用 test() 函数都会输出 $a 的值并加一。
静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心,因为可能会无穷递归下去。必须确保有充分的方法来中止递归。
可变变量
就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置
$GLOBALS — 引用全局作用域中可用的全部变量
$_SERVER
一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。这也就意味着大量的此类变量都会在» CGI 1.1 规范中说明,所以应该仔细研究一下。
echo $_SERVER['SERVER_NAME']; // localhostecho $_SERVER['HTTP_HOST']; // localhostecho $_SERVER['PHP_SELF']; // /PHPDemo/demo.phpecho $_SERVER['SCRIPT_NAME']; // /PHPDemo/demo.phpecho $_SERVER['HTTP_REFERER']; // http://localhost/PHPDemo/echo $_SERVER['HTTP_USER_AGENT']; // Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
$_SERVER['REMOTE_ADDR'] 浏览当前页面的用户的 IP 地址$_SERVER['REMOTE_HOST'] 浏览当前页面的用户的主机名$_SERVER['REMOTE_PORT'] 用户机器上连接到 Web 服务器所使用的端口号$_SERVER['SERVER_ADDR'] 当前运行脚本所在的服务器的 IP 地址 $_SERVER['SERVER_NAME'] 当前运行脚本所在的服务器的主机名$_SERVER['SERVER_PORT'] 当前运行脚本所在的服务器的端口号$_SERVER['REQUERT_METHOD'] 访问页面使用的请求方法$_SERVER['REQUERT_TIME'] 请求开始时的时间戳$_SERVER['REQUEST_URI'] URI 用来指定要访问的页面$_SERVER['QUERY_STRING'] query string(查询字符串),如果有的话,通过它进行页面访问。$_SERVER['SCRIPT_FILENAME'] 当前执行脚本的绝对路径。$_SERVER['HTTP_HOST'] 当前访问页面的域名//当前访问页面的地址 $_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']
$_GET
PHP $_GET 广泛用于收集提交 method=”get” 的 HTML 表单后的表单数据。
$_POST
PHP $_POST 广泛用于收集提交 method=”post” 的 HTML 表单后的表单数据。
$_FILES
存储各种与上传文件有关的信息
$_COOKIE
将用户的会话数据存储在客户端浏览器
';echo nl2br($content); // nl2br 在字符串所有新行之前插入 HTML 换行标记
?>
$_SESSION
将用户的会话数据存储在服务端
"; // 显示当前的session_idecho $_SESSION['sessionName']; // 读取 session 的值 unset($_SESSION['sessionName']); //销毁一个sessionvar_dump($_SESSION);?>
$_REQUEST 用于收集 HTML 表单提交的数据。 method=”GET” 和 method=”POST” 都适应
$_ENV
PHP中的$_ENV是一个包含服务器端环境变量的数组。
可以用 define() 函数来定义常量
常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。用正则表达式是这样表达的:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*。
define("CONSTANT", "Hello world.");
魔术常量
PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
__LINE__ 文件中的当前行号。
__FILE__ 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
__DIR__ 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) =
__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。
__TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
__NAMESPACE__ 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。
最基本的表达式形式是常量和变量
因为赋值操作的顺序是由右到左的,也可以这么写“$b = $a =5”。
HP 和多数其它语言的用户应该比较熟悉变量 ++ 和变量 -- 符号写做“++$variable”,求增加后的值(PHP 在读取变量的值之前,增加变量的值,因而称之为“前递增”)。后递增,写做“$variable++”,求变量未递增之前的原始值(PHP 在读取变量的值之后,增加变量的值,因而叫做“后递增”)。
一个常用到表达式类型是比较表达式。这些表达式求值 FALSE 或 TRUE。支持 >(大于),>=(大于等于),==(等于),!=(不等于),<(小于),<= (小于等于)。PHP 还支持全等运算符 ===(值和类型均相同)和非全等运算符 !==(值或者类型不同)。这些表达式都是在条件判断语句,比如,if 语句中最常用的。
三元条件运算符$first ? $second : $third