0

3.4PHP中可变变量和预定义变量

Posted by 撒得一地 on 2015年10月8日 in PHP入门教程

可变变量

可变变量是一种独特的变量,它允许动态改变一个变量名称。其工作原理很简单,就是该变量的名称由另外一个变量的值来确定,实现过程就是在变量的前面再多加一个美元符号"$"。

实例1:

<?php
  $a = "hello";
  /*使用了两个美元符号后,就可以
    作为一个可变变量了。
  */
  $$a = "test"; 

  /*上面两个变量都被定义了,$a的内容
    是"hello",而且$hello的内容是"test"
  */
  echo "$a ${$a}"."<br/>";
  echo "$a $hello";
?>

上面的输出结果:
hello test
hello test

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

类的属性也可以通过可变属性名来访问。可变属性名将在该调用所处的范围内被解析。例如,对于 $foo->$bar  表达式,则会在本地范围来解析 $bar  并且其值将被用于 $foo  的属性名。对于 $bar  是数组单元时也是一样。 

实例2:

<?php
 class  foo{
    var  $bar = 'I am bar.' ;
    var  $arr = array('I am A.','I am B.');
    var  $r = 'I am r.' ;
 }
 $foo  = new  foo ();
 $bar  =  'bar' ;
 $baz  = array( 'foo' ,  'bar' ,  'baz' ,  'quux' );
 echo  $foo -> $bar  .  "\n" ;
 echo  $foo -> $baz [ 1 ] .  "\n" ;

 $start  =  'b' ;
 $end    =  'ar' ;
 echo  $foo ->{ $start  .  $end } .  "\n" ;

 $arr  =  'arr' ;
 echo  $foo -> $arr [ 1 ] .  "\n" ;
 echo  $foo ->{ $arr }[ 1 ] .  "\n" ;
?>

以上实例输出:
I am bar.
I am bar.
I am bar.
I am r.
I am B. 

预定义变量

PHP还提供了很多非常实用的预定义变量,通过这些预定义变量可以获取到用户的会话、用户操作系统的环境和本地操作系统等信息。常用的预定义变量如下:

$_SERVER[‘SERVER_ADDR’] 当前运行脚本所在的服务器的IP地址。

$_SERVER[‘SERVER_NAME’] 当前运行脚本所在服务器主机名称。如果该脚本运行在一个虚拟主机上,则该名称由虚拟主机所设置的值决定。

$_SERVER[‘REQUEST_METHOD’] 访问页面时的请求方法,如GET、HEAD、POST、PUT等,如果请求的方式时HEAD,PHP脚本将发出头信息后中止(这意味着在产生任何输出后,不再有输出缓冲)。

$_SERVER[”REMOTE_ADDR] 正在浏览当前页面用户的IP地址。

$_SERVER[‘REMOTE_HOST’] 正在浏览当前页面用户的主机名。反向域名解析基于该用户的REMOTE_ADDR。

$_SERVER[‘REMOTE_PORT’] 用户连接到服务器时所使用的端口。

$_SERVER[‘SCRIPT_FILENAME’] 当前执行脚本的绝对路径名。注意:如果脚本在CLI中被执行,作为相对路径,如file.php或者
../file.php,$_SERVER[‘SCRIPT_FILENAME’]将包含用户指定的相对路径。

$_SERVER[‘SERVER_PORT’] 服务器所使用的端口,默认为80.如果使用SSL安全连接,则这个值为用户设置的HTTP端口。

$_SERVER[‘SERVER_SIGNATURE’] 包含服务器版本和虚拟主机名的字符串。

$_SERVER[‘DOCUMENT_ROOT’] 当前运行脚本所在的文档根目录。在服务器配置文件中定义。

$_COOKIE 通过HTTPCookie传递到脚本的信息。这些cookie多数是由执行PHP脚本时通过setcookie()函数设置的。

$_SESSION 包含与所有会话变量有关的信息。$_SESSION变量主要应用于会话控制和页面之间值的传递。

$_POST 包含通过POST方法传递的参数的相关信息。主要用于获取通过POST方法提交的数据。

$_GET 包含通过GET方法传递的参数的相关信息。主要用于获取通过GET方法提交的数据。

$GLOBALS 由所有已定义全局变量组成的数组。变量名就是该数组的索引。它可以称得上是所有超级变量的超级组合。

标签:, ,

上一篇:

下一篇:

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

4 + 1 = ?

网站地图|XML地图

Copyright © 2015-2018 技术拉近你我! All rights reserved.
闽ICP备15015576号-1,版权所有©psz.