这个问题在这里已有答案:
我对这种情况有点困惑。
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循环问题。所以在这种情况下,我相信它有点不同。
现在我的理解是,在代码块中声明的变量只能在该块中使用
错了,如果你的意思是{}
作为一个块。
函数内使用的任何变量默认限制为本地函数范围。
函数中没有提到{}
级别范围。函数内声明的任何变量在整个函数中都可用,即使它在任何子大括号内声明也是如此。这就是为什么它仍然可用。像$un
这样的变量甚至可以在循环之外访问,只是它们将包含上次迭代的值。