PHP代码例子:
function buildTower() {
$block1 = "红色积木"; // 从收纳盒拿一块积木
$block2 = "蓝色积木"; // 再拿一块,放在第一块上面
// 用完后,积木会自动放回盒子
}
PHP代码例子:
$dino1 = new Dinosaur("霸王龙"); // 买一只霸王龙,放在箱子里
$dino2 = new Dinosaur("三角龙"); // 再买一只三角龙
// 你可以随时玩任意一只恐龙,不需要按顺序
快速存取:就像玩积木一样,拿取和放回都很快
function calculate($a, $b) {
$sum = $a + $b; // $sum存在栈里,函数结束就消失
return $sum;
}
顺序执行:就像搭积木塔,必须一层一层往上搭
function step1() { step2(); } // step1在栈底,step2在栈顶
function step2() { /* ... */ }
不确定大小:就像收藏恐龙,不知道未来会有多少只
$dinosaurs = [];
for ($i=0; $i<1000; $i++) {
$dinosaurs[] = new Dinosaur("小恐龙$i"); // 堆里可以放任意多恐龙
}
长期保存:就像你最喜欢的恐龙,想一直保留
$petDino = new Dinosaur("宠物龙"); // 程序结束前不会消失
PHP中的栈操作:
function playGame() {
$score = 0; // 放一个玩具(变量)到传送带
$level = 1; // 再放一个
// 函数结束时,传送带自动清空
} // 两个玩具自动被拿走
PHP中的堆操作:
$toys = [];
for ($i=0; $i<3; $i++) {
$toys[] = new Toy("玩具$i"); // 管理员在仓库找空位放玩具
}
// 如果你忘记玩具的位置,它会永远留在仓库(内存泄漏)
PHP同时需要两者的原因:
下次写PHP代码时,想象你在整理玩具,就能明白什么时候该用栈(积木),什么时候该用堆(恐龙)啦!