【发布时间】:2016-02-26 10:08:08
【问题描述】:
我环顾四周,但真的找不到任何东西。我尝试使用 global,但我认为我用错了。
function testing() {
$a = (object) array('a' => 100, 'b' => 200);
function test2(){
global $a;
var_dump($a);
}
test2();
}
testing();
我希望能够在 test2() 中获取 $a 而无需将变量作为参数传递。
编辑: 感谢您的cmets和答案。这些示例有效,但是在我的特定情况下它似乎不起作用。我在视图顶部写了这个小函数,然后在需要时调用它。
var_dump($data); // DATA here is fine - I need it in the function
function getDataVal($data_index) {
return (isset($data->{$data_index}))?$data->{$data_index}:'';
}
然后我稍后在页面上调用它,如下所示:
<input type="text" id="something" value="<?=getDataVal('something')?>" />
我知道我可以在请求中传递 $data,但是我希望有一种更简单的方法来访问该函数中的数据。
【问题讨论】:
-
因为变量不在全局命名空间中,它在第一个函数中。在两个函数中全局定义它,或查看下面的链接。
-
在两个函数中定义为全局
-
尽量避免使用全局变量。全局变量就像放在校园中间的一个打开的午餐盒。你早上把午餐放在里面,你永远不知道中午会放什么。