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");
// 正确,变量已被修改。
当前页阅读量为: