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