php 函数作用域影响变量可见性:函数内部的局部变量优先级高于全局变量。函数内部同名变量会覆盖全局变量。函数外部无法访问局部变量。
PHP 函数作用域对变量声明的影响
PHP 中的函数作用域决定了变量在函数内部和外部的可见性。
函数内部和外部的变量
立即学习“PHP免费学习笔记(深入)”;
- 局部变量:仅在函数内部可见,由 $ 符号声明。
- 全局变量:在函数内部和外部都可见,由 global 关键字声明,用于修改函数外部已存在的变量。
作用域规则
- 局部变量在函数内部优先级高于全局变量。
- 如果函数内部声明同名变量,则覆盖同名的全局变量。
- 函数外部不能访问局部变量。
实战案例
假设我们有一个函数,获取一个全局变量 $name 的长度,并返回结果:
<?php
$name = "John Doe"; // 全局变量
function getNameLength($arg) {
// 声明局部变量 $name
$name = "Local Name";
// 访问全局变量 $name
global $name;
// 返回全局变量 $name 的长度
return strlen($name);
}
echo getNameLength("Test Arg"); // 结果:8
?>
解释:
- 全局变量 $name 在函数内部可见,但局部变量 $name 会覆盖它。
- 使用 global 关键字将函数内部的 $name 与全局变量 $name 绑定在一起。
- 函数返回全局变量 $name 的长度,即 8。