第一章:变量赋值?不就是等号的事吗?
朋友,如果你刚学PHP,大概率写过这样的代码:
<?php
$name = "张三";
$age = 25;
echo "我叫$name,今年$age岁!";
看起来简单得像个“Hello World”——等号左边放变量,右边放值,齐活!但今天我要告诉你的是:这个小小的等号,可能是你编程生涯中最大的“伪装者”。
想象一下,你是个外卖员(变量),接到一份红烧肉订单(数据)。普通赋值就像你把这份红烧肉完整复制一份带回家;而引用赋值呢?更像是你只拿了个取餐码,任何时候红烧肉被换了菜,你手里的东西也跟着变——是不是细思极恐?
别急,我们先从最基础的开始拆解。
第二章:基础赋值——PHP世界的“租房游戏”
2.1 基本玩法:给数据找个家
在PHP里,变量不用提前“报名”(声明类型),想用就用:
<?php
// 像不像在租房App上找房子?
$room = "1001室"; // 字符串户型
$price = 3500; // 数字租金
$isAvailable = true; // 布尔值:是否可租
$features = ["独立卫浴", "朝南", "带阳台"]; // 数组:房屋特色
echo "我看中了$room,月租{$price}元";
每个变量都是内存里的一个“房间”,等号就是把数据放进房间的动作。但这里有个关键细节:PHP的变量名实际上是个“标签”,贴在了内存地址上。
2.2 内存视角:看看等号在搞什么鬼
来看这个经典场景:
<?php
$original = "我是原版数据";
$copy = $original; // 传说中的“赋值”
$original = "数据被修改了!";
echo $copy; // 输出什么?
// 答案是:“我是原版数据”
为什么$copy没跟着变?画个内存图你就懂了:
【修改前】
$original → 内存地址0x001 → "我是原版数据"
$copy → 内存地址0x002 → "我是原版数据"(完全复制了一份)
【修改后】
$original → 内存地址0x001 → "数据被修改了!"(原地修改)
$copy → 内存地址0x002 → "我是原版数据"(纹丝不动)
这就是传值赋值——创建数据的完整副本,两者从此互不干扰。就像你复制了朋友的PPT课件,他后来改了内容,你的副本还是老的。
第三章:引用赋值——绑定灵魂的“双胞胎感应”
3.1 神奇的操作符:&
如果我想让两个变量“心连心”怎么办?加个&符号:
<?php
$original = "初始数据";
$reference = &$original; // &符号是关键!
$original = "哎呀我变了";
echo $reference; // 输出:“哎呀我变了”
现在内存里发生了什么?
$original → 内存地址0x001 → "哎呀我变了"
↑
$reference → 指向同一个地址!
$reference没有自己的数据房间,它只是$original的“别名”或“影子”。这种引用赋值就像你和朋友共享同一个网盘链接,网盘里的文件变了,你们看到的都会变。
3.2 实战场景:大数组操作的性能救星
假设你要处理一个10万条用户数据的数组:

最低0.47元/天 解锁文章
1816

被折叠的 条评论
为什么被折叠?



