php之普通变量赋值、对象赋值、引用赋值的区别

php中变量赋值默认是赋值传递,但是对象类型比较特殊,默认是引用传递

这涉及到php的深复制和浅复制,有兴趣的可以看看

1. 原始类型 – 直接赋值
$name1 = 'sky';
$name2 = $name1;
$name2 = 'fly';
echo $name1.' '.$name2;     //sky fly
2. 数组array – 直接赋值
$arr1 = array(0, 1, 2, 3);
$arr2 = $arr1;
$arr2[0] = 6;
echo $arr1[0].' '.$arr2[0]; //0 6
3. class类 – 内存地址
class Person{
    public $name = 'sky';
    public $age = 14;
}
$person1 = new Person();
$person2 = $person1;
$person2->name = 'moon';
echo $person1->name.' '.$person2->name;    //moon moon

可以看出,对象赋值默认采用的是引用赋值

4. php中规定,使用『&』符号,可以将普通赋值改成内存地址,看下面代码
$name1 = 'sky';
$name2 = &$name1;  //&符号的使用
$name2 = 'fly';
echo $name1.' '.$name2;     //fly fly
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值