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");
// 正確,變量已被修改。
© 轉載需附帶本文連結,依 CC BY-NC-SA 4.0 釋出。