Menu
CoddyTech

变量作用域

本课属于 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,但函数看不到它。要在函数中使用外部的值,请将它们作为参数传入:这是你已经学过的简洁且推荐的做法。

这种隔离其实很有帮助。这意味着函数不会意外更改程序其他部分的变量,让代码更可预测,也更容易调试。

challenge icon

挑战

简单

读取两行输入:

  1. 一个人的名字(例如,Alice)
  2. 一个整数形式的奖金金额(例如,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);
?>
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: PHP 在线编译器