PHP中变量和变量定义

关于php变量 的简单说明和定义常量define 普通变量 静态变量 传地址赋值(简单引用) PHP 超全局变量$GLOBALS等用法.

变量用于存储值,比如数字、文本字符串或数组.

一旦设置了某个变量,我们就可以在脚本中重复地使用它.

PHP 中的所有变量都是以 $ 符号开始的.

在 PHP 中设置变量的正确方法是:

$var_name = value;PHP 的入门者往往会忘记在变量的前面的 $ 符号.如果那样做的话,变量将是无效的.

让我们试着创建一个存有字符串的变量,和一个存有数值的变量:

实例代码如下:

  1. <?php
  2. $txt = "Hello World!";
  3. $number = 16;
  4. ?>

实例代码如下:

  1. <?php
  2. $foo = 25;
  3. $bar = &$foo; // 合法的赋值
  4. $bar = &(24 * 7); // 非法; 引用没有名字的表达式
  5. function test()
  6. {
  7. return 25;
  8. }
  9. $bar = &test(); // 非法
  10. ?>

预定义变量

PHP 提供了大量的预定义变量.由于许多变量依赖于运行的服务器的版本和设置,及其它因素,所以并没有详细的说明文档.一些预定义变量在 PHP 以命令行形式运行时并不生效.

变量范围

变量的范围即它定义的上下文范围(也就是它的生效范围).大部分的 PHP 变量只有一个单独的范围.这个单独的范围跨度同样包含了 include 和 require 引入的文件.

PHP 的全局变量和 C 语言有一点点不同,在 C 语言中,全局变量在函数中自动生效,除非被局部变量覆盖.而PHP中的局部变量不会被全局变量覆盖,如果使用会是变量的缺省初始值.这可能引起一些问题,有些人可能不小心就改变了一个全局变量.PHP 中全局变量在函数中使用时必须申明为global.

使用静态变量

变量范围的另一个重要特性是静态变量(static variable).静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失.

注意事项:

变量的命名规则

变量名必须以字母或下划线 "_" 开头.

变量名只能包含字母数字字符以及下划线.

变量名不能包含空格.如果变量名由多个单词组成,那么应该使用下划线进行分隔(比如 $my_string),或者以大写字母开头(比如 $myString).

php变量定义

1.定义常量define("CONSTANT", "Hello world.");

常量只能包含标量数据(boolean,integer,float 和 string).

调用常量时,只需要简单的用名称取得常量的值,而不能加“$”符号,如:echo CONSTANT;

注: 常量和(全局)变量在不同的名字空间中.这意味着例如 TRUE 和 $TRUE 是不同的.

2.普通变量$a = "hello";

3.可变变量(使用两个美元符号($))

$$a = "world";

两个变量都被定义了:

$a 的内容是“hello”并且 $hello 的内容是“world”.

因此,可以表述为:

echo "$a ${$a}";或者 echo "$a $hello";它们都会输出:hello world

要将可变变量用于数组,必须解决一个模棱两可的问题.这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要 $$a 作为一个变量并取出该变量中索引为 [1] 的值.解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1].

4.静态变量

在函数内部static $a = 0;

注意:声明中用表达式的结果对其赋值会导致解析错误如static $a =3+3;(error)

静态变量仅在局部函数域中存在(函数内部),函数执行完之后,变量值不会丢失,可用于递归调用

5.全局变量

在函数体内定义的global变量,函数体外可以使用,在函数体外定义的global变量不能在函数体内使用,在全局范围内访问变量可以用特殊的 PHP 自定义 $GLOBALS 数组:

如:$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];

在一个函数域内用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用

global $obj;

注:对于变量的 static 和 global 定义是以 应用 的方式实现的

6.给变量赋值:传地址赋值(简单引用):

$bar = &$foo; //加&符号到将要赋值的变量前

改动新的变量将影响到原始变量,这种赋值操作更加快速

注意:只有命名变量才可以传地址赋值

注意:如果

$bar = &$a;

$bar = &$foo;

改变$bar的值只能改变变量foo的值,而不改变a的值(引用改变了)

7.PHP 超全局变量$GLOBALS : 包含一个引用指向每个当前脚本的全局范围内有效的变量.该数组的键标为全局变量的 名称.从 PHP 3 开始存在 $GLOBALS 数组.

$_SERVER : 变量由 Web 服务器设定或者直接与当前脚本的执行环境相关联.类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用).

$_GET : 经由 HTTP GET 方法提交至脚本的变量.

$_POST : 经由 HTTP POST 方法提交至脚本的变量.

$_COOKIE : 经由 HTTP Cookies 方法提交至脚本的变量.

$_FILES : 经由 HTTP POST 文件上传而提交至脚本的变量.

文件上传表单中要有 enctype="multipart/form-data"

$_ENV : 执行环境提交至脚本的变量.

$_REQUEST :经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任.所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义.该数组没有直接模拟 PHP 4.1.0 的早期版本.参见 import_request_variables().

注意: 自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在于 $_REQUEST 中.

$_SESSION :当前注册给脚本会话的变量.