我对这种情况感到有些困惑。
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$un = $row['USERNAME'];
$pw = $row['PASSWRD'];
$at = $row['ACCOUNT_TYPE'];
$GLOBALS['fn'] = $row['FNAME'];
}
所以这段代码在函数内部。变量$un
,$pw
和$at
都已声明,并在此代码块中给出了值。
现在我的理解是,在block
代码中声明的变量只能在该块中使用。
正如您所看到的,我还有一个$GLOBALS['fn']
变量设置,我在另一个文件中使用它,这样我就可以将其设置为全局。
现在我的问题是:
如何在块内声明代码块之外的变量?
根据这篇文章PHP Variable scope,在函数外部声明的变量与函数内部的变量不同,即使它们共享相同的名称。为此,我需要在块中添加global
或$GLOBALS
数组的变量。
重复注意事项 - 在我没有真正怀疑之前可能已经问过这个问题,因为它很简单。我只是用自己的话来说明我的情况。帮助我更好地理解它。 此链接的问题也解释了我在链接文章中读到的内容。但它确实没有解决我所指的while循环问题。所以在这种情况下,我相信它有点不同。
答案 0 :(得分:1)
现在我的理解是,在一个代码块中声明的变量只能在该块中使用
错误,如果您将{}
表示为块。
函数内使用的任何变量默认都限制在本地函数范围内。
函数中没有提到{}
级别范围。函数内声明的任何变量在整个函数中都可用,即使它在任何子大括号内声明也是如此。这就是为什么它仍然可用。您可以在循环之外访问$un
之类的变量,只需它们将包含上次迭代的值。
答案 1 :(得分:0)