PHP面试考点---1. php引用变量的概念和定义(延伸php引用变量的原理);

1. php引用变量的概念和定义(延伸:php引用变量的原理);

概念: 在php中引用意味着用不同的名字访问同一个变量内容;

 

定义方式: 使用&符号;

 

工作原理:

$a = range(1, 1000);

$b = $a;

$a与$b指向的是一个空间,当$a发生改变的时候,$b还是指向原来的空间,而$a触发cow(copy on write)机制指向了另一个新空间;

$b = &$a;

$a与$b还是指向一个空间,不过此时$a改变的时候不会再开启另一块空间,而是直接改变原来得空间.$b与$a共用一个空间,$a改变$b也跟着改变.

可以使用memory_get_usage()(查看内存使用情况)和xdebug_debug_zval()(变量容器)来验证;

Xdebug_debug_val()打印出来  refcout: 指向此空间的个数,  is_ref(): 是否引用;

 

Unset: unset()只会销毁变量,并不会销毁空间

$a = 1;

$b = &$a;

Unset($a);

Echo $b; //结果是1;

 

对象的特点: 对象的本身就是引用传值;

Class A

{

Public $name = ‘aa’;

}

$a = new A;

$b = $a;

$b->name = ‘bb’;

Echo $a->name; //结果是’bb’; a和b共用一个地址,如果要复制的话 可以用__clone()

真题

$data = array(1,2,3);

Foreach( $data as $k=>$v ){

$v = &$data[$k];

}

Var_dump($data); //结果是2,3,3;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值