zoukankan      html  css  js  c++  java
  • PHP之可变变量

    前言:本篇博客主要讲解PHP的可变变量的作用和用法。文章中所涉及到的例子来自http://php.net/manual/zh/language.variables.variable.php,稍有改动。

    正文:

      PHP中有一种变量叫做可变变量,这种变量不是一种基础类型的变量。可变变量是指一个普通变量的值可以作为另一个变量的名称被使用。这句话听起来有些抽象。我们可以通过实例来展示可变变量的定义以及实用。

    1 $a = 'hello';
    2 $$a = 'world';
    3 echo $hello;

    在上面这段代码中,第一行是一个普通的变量定义,变量名称为a,变量值为hello。第二行使用变量a的值,定义了一个变量,这个变量的名字叫做hello(也就是a的值),值为world。将这个变量输出之后的结果是:world。

      下面看一个稍微复杂一点的例子

    1 $b = array("I","am","a","student");
    2 $I = "a I";
    3 $am = "word AM";
    4 $a = "an A";
    5 $student = "a STUDENT";
    6 $var = 'b';
    7 echo ${$b[1]};
    8 echo ${$var}[1];

    上面这段代码的1-6行都是在定义变量。第7行的结果为:word AM。下面我们解释第7行的结果。$b[1]的值是这个数组中的第二个元素,即 am,那么${$b[1]}也就是${am},即$am(花括号可以去掉)。那么,第7行的结果就是变量$am的值。第8行的结果为:am。下面我们解释第8行的结果。首先,服务器会解析$var的值,$var = ‘b',所以${$var}[1]为${b}[1],也就是$b[1]的值,即am。

    以上两个例子都比较简单地说明了可变变量的用法。其实可变变量也可以用于PHP的面向对象中。下面的例子我们为大家解释可变变量在面向对象中的应用。

     1 class foo{
     2     var $bar = 'I am bar';
     3     var $arr = array('I am A','I am B','I am C');
     4     var $r = 'I am r';
     5 }
     6 
     7 $bar = 'bar';
     8 $baz = array('foo','bar','baz','quux');
     9 
    10 $myfoo = new foo();
    11 echo $myfoo->$bar."<br>";
    12 echo $myfoo->$baz[1]."<br>";
    13 
    14 $start = 'b';
    15 $end = 'ar';
    16 echo $myfoo->{$start.$end}."<br>";
    17 
    18 $arr = 'arr';
    19 echo $myfoo->$arr[1]."<br>";
    20 echo $myfoo->{$arr}[1]."<br>";

    上面这段代码中定义了一个类:foo。

      第11行的结果为:I am bar。因为在解析$myfoo->$bar的过程中,首先解释器会解析$bar,$bar的值为bar,那么$myfoo->$bar等同为$myfoo调用其类中的属性 $bar的值,结果为:I am bar。

      第12行的结果为:I am bar。因为在解析$myfoo->$baz[1]的过程中,首先解释器会解析$baz[1],$baz[1]的值为bar,那么$myfoo->$baz[1]等同为$myfoo调用其类中属性$bar的值,结果为:I am bar。

      第16行的结果为:I am bar。因为在解析$myfoo->{$start,$end}的过程中,首先解析$start和$end的值,分别为"b"和"ar",通过连接符"."连接后结果为bar,那么$myfoo->{$start,$end}的结果为$myfoo调用其类中属性$bar的值,结果为:I am bar。

      第19行的结果为:I am r。因为在解析$myfoo->$arr[1]的过程中,首先解析$arr[1]的值,即为r。$myfoo->$arr[1]的值为调用其类中属性r的值,结果为:I am r。

      第20行的结果为:I am B。因为在解析$myfoo->{$arr}[1]的过程中,首先解析$arr的值,为arr,然后是{$arr}[1]的值也是调用$myfoo属性$arr的第二个属性的值,结果为:I am B。

  • 相关阅读:
    基于决策树和智能搜索系统
    基于神经网络的人工智能系统
    身边的人工智能&人工智能发展史
    Linux简介和环境的搭建
    回来啦
    顺序表
    方格计数
    2000年的1月1日,是那一年的第1天。 那么,2000年的5月4日,是那一年的第几天?
    十三、排序算法
    十二、预处理
  • 原文地址:https://www.cnblogs.com/SevenwindMa/p/3951450.html
Copyright © 2011-2022 走看看