好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php的引用符号&用法 - php面向对象

php的引用符号&用法

<?php  $a = 'CC' ;  $b = $a ; //$a和$b指向同一内存地址   $a = 'DD' ;  echo   $b ;  /*   php中对于地址的指向(类似指针)功能不是由用户自己来实现的,   是由Zend核心实现的,php中引用采用的是[写时拷贝]的原理,   就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。   当$a='DD';   由于$a与$b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断   自动为$b生产一个$a的数据拷贝,重新申请一块内存进行存储。   * */     echo   '<hr>' ;  $c = 'ABC' ;  $d =& $c ; //$b指向$a的内存地址,传地址赋值   $d = 'E' ;  echo   $c ;  /**   CC   --------------------------------------------------------------------------------   E   * */   ?>    <?php  //函数的引用返回   function  &test()  {  static   $b =0; //申明一个静态变量   $b = $b +1;  echo   '$b=' . $b ;  echo   '<br>' ;  return   $b ;  }  $a =test();  echo   '$a=' . $a ; //这里不是函数的引用返回,跟普通的函数调用没有区别   $a =&test();   //这种方式才是函数的引用返回。   //至于什么是引用返回呢(PHP手册上说:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。)    //用在这里意思就是test()被绑定在$a上了。   echo   '$a=' . $a ;  $a =6;  test(); //这条语句会输出$b的值 为7   echo   '$a=' . $a ;  /*   $b=1   $a=1$b=2   $a=2$b=7   $a=7   * */   ?>    <?php  //引用传递   function  printArray(& $arr ){        //echo count($arr);         array_pop ( $arr );        echo   count ( $arr );    }  //值传递   function  printArray2( $arr ){        //echo count($arr);         array_pop ( $arr );        echo   count ( $arr );  }  $a = array (1,2,3);  $b = $a ;  //$b=&$a;   printArray( $a );  print_r( $b );  print_r( $a );  echo   '<hr>' ;  printArray( $a );  print_r( $b );  print_r( $a );  /**     2Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 )   --------------------------------------------------------------------------------   1Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 )     * */   ?>  <?php  //对象的引用   class  a{  var   $name = "ABC" ;  }  $b = new  a;  $c = $b ;  echo   '$b->name=' . $b ->name; //这里输出ABC   echo   '<br>' ;  echo   '$c->name=' . $c ->name; //这里输出ABC   echo   '<br>' ;  $b ->name= "DEF" ;  echo   '$b->name=' . $b ->name;  echo   '<br>' ;  echo   '$c->name=' . $c ->name;  echo   '<hr>' ;  /*   在PHP5中 对象的复制 是通过引用来实现的。   上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b;   PHP5中默认就是通过引用来调用对象,   但有时你可能想建立一个对象的副本,   并希望原来的对象的改变不影响到副本 .   为了这样的目的,PHP定义了一个特殊的方法,称为__clone.   * */   $x = new  a;  $y =clone  $x ;  $x ->name= 'XXX' ;  echo   '$x->name=' . $x ->name;  echo   '<br>' ;  echo   '$y->name=' . $y ->name;    /*     $b->name=ABC   $c->name=ABC   $b->name=DEF   $c->name=DEF   --------------------------------------------------------------------------------   $x->name=XXX   $y->name=ABC     * */   ?> 

查看更多关于php的引用符号&用法 - php面向对象的详细内容...

  阅读:40次