1.变量名是区分大小写的
2.一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。在此所 说的字母是 a-z,A-Z,以及 ASCII 字符从 127 到 255(0x7f-0xff)。变量名中可以有中文。
3.$this是特殊的变量,不能被赋值。
4.变量默认总是传值赋值。引用赋值会修改原始变量。isset()用来检测一个变量是否已被初始化。
5.变量范围:
大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。定义变量会在当前文件和包含文件中均生效。
若在用户定义函数外定义了变量,在函数内是不能直接使用的,需要global声明为全局变量。使用全局变量的第二个办法,是使用$_GLOBALS这个全局变量。
静态变量。只在局部范围存在,离开程序值依旧存在。声明时不能用表达式的结果赋值,会报错。静态声明在编译时解析。
可变变量:超全局变量不能用作可变变量。
来自PHP外的变量:
1.HTML表单过来的变量变量名中的点和空格被换为下划线
2.IMAJ SUBMIT来的变量。用户点击时,除了相应表单变量,还有sub_x,sub_y,是用户点击图标的坐标。
3.HTTPCOOKIE
Cookies 是一种在远端浏览器端存储数据并能追踪或识别再次访问的用户的机制。可以用setcookie()函数设定 cookies。Cookies 是 HTTP 信息头中的一部分,因此 SetCookie 函数必须在向浏览器发送任何输出之前调用。对于header()函数也有同样的限制。Cookie 数据会在相应的 cookie 数据数组中可用,例如$_COOKIE,$HTTP_COOKIE_VARS和$_REQUEST
变量名中点的处理。
常量:
1.define()和const 可定义常量,常量习惯大写。一旦定义,就不能取消定义或改变。
2.常量的值只能是标量。
3.常量和全局变量在不同的命名空间内。
4.常量可以不用理会变量的作用域而在任何地方定义和访问
5.如果常量名是动态的,也可以用函数constant()来获取常量的值。用get_defined_constants()可以获得所有已定义的常量列表。
6.魔术常量:
__FILE__ 返回当前文件路径和文件名。
__DIR__文件路径,等同dirname(__FILE__)
7.执行运算符
PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为外壳命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数shell_exec()相同。
8.数组运算符
+运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。
9.instanceof也可用于确定一个变量是不是实现了某个接口的对象的实例:
10.declare()有tick和encoding两种指令。
11.require和include几乎完全一样,除了处理失败的方式不同之外。require在出错时产生E_COMPILE_ERROR级别的错误。换句话说将导致脚本中止而include只产生警告(E_WARNING),脚本会继续运行。
12.goto
goto操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是goto之后接上目标位置的标记。PHP 中的goto有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用goto代替多层的break。
13.数组最后一个元素的$value引用在foreach循环之后仍会保留。建议使用unset()来将其销毁。
foreach不支持用“@”来抑制错误信息的能力。
PHP 5.5 增添了遍历一个数组的数组的功能并且把嵌套的数组解包到循环变量中,只需将list()作为值提供。
14.PHP 中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然。PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。函数名是大小写无关的,不过在调用函数的时候,使用其在定义时相同的形式是个好习惯。
15.可变函数:这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。
16.匿名函数:匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。闭包可以从父作用域中继承变量。 任何此类变量都应该用use语言结构传递进去。