PHP 中变量默认是局部的
今天我在使用 PHP 写一个网站的时候,由于我的 PHP 语言刚刚入门,马上遇到了变量记不住的问题。
$sql = "";
$sql1 = "";
$sql2 = "";
function addTextColumn($columnName)
{
$sql1 = $sql1.",".$columnName;
$sql2 = $sql2.",'".$_POST[$columnName]."'";
}
// 添加字段
addTextColumn("softver");
// 错误:该命令没有产生预期效果。$sql1 和 $sql2 变量均未修改。
后来经过查阅资料,问题的根源是,在 PHP 的函数中,任何一个变量的直接使用均会导致声明了一个局部的变量,即使外部有同名的变量。这点和 C++ 等大量语言均不一样;在那些语言中,如果你没有显式地重新声明一个内部变量去覆盖全局变量,是可以直接访问全局变量的。但是在 PHP 中,只要在函数中用了变量,这个变量就直接是局部变量。 解决方法很简单:
$sql = "";
$sql1 = "";
$sql2 = "";
function addTextColumn($columnName)
{
global $sql1, $sql2; // 添加这一行代码即可解决。
$sql1 = $sql1.",".$columnName;
$sql2 = $sql2.",'".$_POST[$columnName]."'";
}
// 添加字段
addTextColumn("softver");
// 正确,变量已被修改。
题外话:我帮你整理了包括 AI 写作、绘画、视频(自媒体制作)零门槛 AI 课程 + 国内可直接顺畅使用的软件。想让自己快速用上 AI 工具来降本增效,辅助工作和生活?限时报名。
© 转载需附带本文链接,依据 CC BY-NC-SA 4.0 发布。