变量作用域
本课属于 Coddy PHP 学习旅程的“基础知识”单元。第 67 课,共 71 课。
在函数内部创建的变量与函数外部的变量完全独立。这个概念称为变量作用域
在函数内部定义的变量只在该函数内部存在。这种变量称为局部变量:
<?php
function sayHi() {
$message = "Hello!";
echo $message;
}
sayHi();
echo $message; // 错误:$message 在这里不存在
?>变量 $message 在 sayHi() 内创建,并在函数结束时消失。在函数外尝试访问它会导致错误。
类似地,在函数外定义的变量不会自动在函数内使用:
<?php
$name = "Alice";
function greet() {
echo $name; // 错误:$name 未在此函数中定义
}
greet();
?>虽然主代码中存在 $name,但函数看不到它。要在函数中使用外部的值,请将它们作为参数传入:这是你已经学过的简洁且推荐的做法。
这种隔离其实很有帮助。这意味着函数不会意外更改程序其他部分的变量,让代码更可预测,也更容易调试。
挑战
简单读取两行输入:
- 一个人的名字(例如,
Alice) - 一个整数形式的奖金金额(例如,
50)
创建一个名为 calculateBonus 的函数,它接受两个参数:$name(字符串)和 $bonus(int)。
在函数内部:
- 创建一个局部变量
$baseSalary,并将其设为1000 - 将
$baseSalary和$bonus相加,计算总工资 - 返回一个符合以下格式的字符串:
[name] earns [total]
使用输入值调用该函数,并打印返回的结果。
示例 1:
如果输入是 Alice 和 50,输出应为:
Alice earns 1050示例 2:
如果输入是 Bob 和 200,输出应为:
Bob earns 1200示例 3:
如果输入是 Emma 和 0,输出应为:
Emma earns 1000亲手试试
<?php
// 读取输入
$name = trim(fgets(STDIN));
$bonus = intval(fgets(STDIN));
// TODO:在下方创建 calculateBonus 函数
// 接收 $name(字符串)和 $bonus(整数)作为参数
// 创建局部变量 $baseSalary,并将其设置为 1000
// 计算总收入并返回 "[name] earns [total]"
// 调用函数并输出结果
echo calculateBonus($name, $bonus);
?>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: PHP 在线编译器