PHP学习 变量使用总结
程序员文章站
2022-05-14 13:20:24
1.定义常量define("constant", "hello world."); 常量只能包含标量数据(boolean,integer,float 和 string)。...
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 :当前注册给脚本会话的变量。
常量只能包含标量数据(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 :当前注册给脚本会话的变量。
下一篇: php 数组的一个悲剧?