zoukankan      html  css  js  c++  java
  • php引用变量

     1 <?php
     2 //php引用变量:不同变量名指向同一地址。
     3 //定义一个变量a,此时内存开辟了一块区域,$a指向该区域。
     4 $a = 100;
     5 var_dump($a);    //int 100
     6 //定义变量b,将a变量的值赋值给b,此时该区域有两个变量($a和$b)指向。
     7 $b = $a;
     8 var_dump($b);    //int 100
     9 //修改$a变量的值,php变量具有Copy On Write的特性,所以会复制并重写a所指向的区域值,此时a和b分别指向不同区域。
    10 $a = 10;
    11 var_dump($a);    //int 10
    12 var_dump($b);    //int 100
    13 
    14 //------------------------------------------------------------------
    15 
    16 $c = 100;
    17 $d = &$c;
    18 $c = 10;
    19 var_dump($c);    //int 10
    20 var_dump($d);    //int 10
    21 //当引用指向时,php变量不在具有COW特性,且指向同一内存区域。
    22 
    23 //* unset()只能消除变量的引用,不能删除其内存分配的空间
       //* 对象本身就是引用传递
    24 
    25 //------------------------------------------------------------------
    26 
    27 /*
    28 例题:
    29     写出如下程序的输出结果:
    30     <?php
    31     $data = ['a','b','c'];
    32     foreach($data as $key=>$val){
    33         $val = &$data[$key];
    34     }
    35     问:最终$data的值是多少?
    36  */
    37     $data = ['a','b','c'];
    38     foreach($data as $key=>$val){
    39         $val = &$data[$key];
    40         print_r($data);
    41     }
    42 
    43 /*
    44     1.$key = 0,
    45       $val = 'a',
    46       $val = &$d[0] =>'a'
    47       $data = ['a','b','c'];
    48 
    49     2.$key = 1,
    50       $val = 'b', =>$d[0]
    51       $val = &$d[1] =>'b'
    52       $data = ['b','b','c'];
    53 
    54     1.$key = 2,
    55       $val = 'c', =>$d[1]
    56       $val = &$d[2]=>'c'
    57       $data = ['b','c','c'];
    58  */
  • 相关阅读:
    框架学习之Spring 前言
    XML学习第二节 DTD介绍
    JavaScript重学 V512视频
    框架学习之Spring 第五节 SSH整合开发[Spring2.5+Hibernate3.3+Struts2]
    XML学习第一节 XML简介
    框架学习之Spring 第四节 Spring集成JDBC组件开发
    歌曲:酒干倘卖无 背后的故事
    又要被学校开除了!
    linux常用命令
    心情
  • 原文地址:https://www.cnblogs.com/lxj0205/p/9447597.html
Copyright © 2011-2022 走看看