我对PHP中的变量范围有点困惑。我已经阅读了PHP手册中关于范围,GLOBALS和全局的部分,但这似乎并不适用于我正在构建的应用程序。在页面的开头我设置一个像这样的变量
$vars = array(
'id' => '2',
'name' => 'john'
);
然后我想在一个函数中使用它,所以我去了:
function my_func() {
global $var;
foreach ($vars as $var) {
echo $var;
}
}
但除非我在第一次设置变量之前放置global $vars
,否则这不会起作用 - 我真的需要这两个地方的全局吗?或者我做错了什么?
谢谢!
答案 0 :(得分:2)
错字。
global $var;
应为global $vars;
答案 1 :(得分:2)
Globals非常混乱,很难调试,将其作为函数的参数传递。
$array = array( 'id' => '2', 'name' => 'john' );
function my_func($vars) {
foreach ($vars as $var) {
echo $var;
}
}
my_func($array);
答案 2 :(得分:1)
你实际做错了什么 - 正在使用全局变量。永远不要这样做,因为全局变量是副作用。他们生产的案例可能非常难以调试。想象一下,你有第143个包含文件的功能,在2056行的某个地方偶尔会改变你的变量,这也会导致所有逻辑的破坏。
所以,实际上,将变量作为参数传递:
function my_func($vars)
{
foreach ($vars as $var)
{
echo $var;
}
}
至于你的代码 - 首先使用空格。真的 - 对于翻译和编译器而言,它们并不重要,但对于那些阅读该代码的人来说,看到清晰的图像非常重要。
您的错误是您尝试访问全局变量,这是您的循环迭代器,这没有任何意义,因为您的全局变量是数组,而不是临时循环迭代器。 / p>
我希望我的快速代码审核对您有所帮助。