一、开篇:你以为的赋值,真的只是“赋值”吗?
朋友们,今天咱们来聊点PHP里看似“小儿科”,但实际上能让你代码水平立马上一个台阶的东西——赋值运算符。
说句大实话,我见过太多PHP开发者(包括曾经的我),写了几年代码,对待赋值还停留在“等号大法好”的阶段。变量赋值?$a = 1;;变量计算后再赋值?$a = $a + 1;。看起来没毛病是吧?但你知道吗,这种写法就像你每天用算盘算账,虽然也能算出结果,但看到别人用计算器时的效率,会不会觉得自己像个“古典程序员”?
赋值运算符,其实就是PHP给你的“计算器”。它不仅能赋值,还能顺便把计算给做了。今天咱们就把它扒个底朝天,让你看看这个平时不起眼的小东西,到底藏着多少让你代码变优雅的魔法。
先来个灵魂拷问:下面两种写法,你平时用哪种?
// 写法A:传统老实人
$money = 100;
$money = $money + 50; // 发工资了!
$money = $money - 30; // 交房租
$money = $money * 1.1; // 理财收益
// 写法B:高效“偷懒者”
$money = 100;
$money += 50; // 发工资,简简单单
$money -= 30; // 交房租,一目了然
$money *= 1.1; // 理财,干净利落
如果你的答案主要是A,那么恭喜你,看完这篇文章,你的代码行数至少能减少20%!这可不是夸张,而是赋值运算符带来的实实在在的效率提升。
二、基础篇:从“=”说起的赋值那些事儿
1. 等号(=):一切故事的开始
咱们先聊聊最基础的=。虽然它简单,但有几个坑你肯定踩过:
// 基础赋值,这个大家都会
$name = "王大锤";
$age = 28;
$isProgrammer = true;
// 但这里有个经典误区!
if ($a = 5) { // 注意,这里是一个等号!
echo "这行总会执行,因为赋值表达式返回赋值后的值5,非零即真";
}
// 正确比较应该用两个等号
if ($a == 5) {
echo "这才是比较";
}
// 连续赋值:从右往左的“传包裹”游戏
$x = $y = $z = 0;
// 等价于:
// $z = 0;
// $y = $z; // $y变成0
// $x = $y; // $x也变成0
生活化比喻:把=想象成快递小哥。$name = "王大锤"就像是快递小哥把“王大锤”这个包裹送到$name这个地址。而连续赋值$x = $y = 0就像快递小哥先送0给$y,然后复制一份再送给$x。
2. 组合赋值运算符:你的代码“瘦身神器”
好了,重头戏来了!组合赋值运算符是今天的主角,它们能让你告别重复写变量名的“啰嗦病”。
(1)+= 和 -=:财务小助手
// 场景:记账APP开发
$balance = 1000; // 初始余额
// 收入流水
$balance += 500; // 发工资:$balance = $balance + 500;
$balance += 300; // 兼职收入
$balance += 200; // 理财收益
// 支出流水
$balance -= 150; // 交水电费
$balance -= 80; // 买咖啡
$balance -= 200; // 请女朋友吃饭(如果有的话)
echo "当前余额:¥" . $balance; // 输出:当前余额:¥1570
// 有趣用法:不只是数字,数组也能用!
$visits = ["首页" => 0, "产品页" => 0, "关于页" => 0];
$visits["首页"] += 1; // 有人访问首页
$visits["产品页"] += 3; // 产品页很受欢迎
$visits["首页"] += 2; // 首页又来了两人
print_r($visits);
(2)*= 和 /=:比例调整大师
// 场景:电商价格调整
$price = 100;
// 打折季来了!
$price *= 0.8; // 8折:$price = $price * 0.8;
$price *= 0.9; // 折上9折
echo "折后价:¥" . $price; // 输出:72
// 恢复原价计算
$discountedPrice = 72;
$originalPrice = $discountedPrice;
$originalPrice /= 0.9; // 除以折扣
$originalPrice /= 0.8;
echo "原价应该是:¥" . $originalPrice; // 输出:100
// 实用案例:按比例缩放图片尺寸
$width = 800;
$height = 600;
// 等比例缩放50%
$width *= 0.5;
$height *= 0.5;
echo "缩放后尺寸:{$width}x{$height}"; // 输出:400x300
(3)%=:周期计算小能手
// 场景1:计算星期几
$daysPassed = 100; // 从某天起过了100天
$weekday = 1; // 假设开始是星期一(1代表周一)
$weekday += $daysPassed;
$weekday %= 7; // 对7取余,$weekday = $weekday % 7;
if ($weekday == 0) $weekday = 7; // 余数0代表周日,我们换成7
echo "100天后是星期" . $weekday;
// 场景2:轮询任务分配
$totalServers = 5;
$taskId = 18;
$target

最低0.47元/天 解锁文章
383

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



