我必须在两个不同的文件中运行。 其中一个应该在每次调用时向数组添加一个新项目,并且数组应该是可访问的。我为它做的是:
function1(){
global $array;
$array[] = 'hi';
}
但它只是在数组中创建了一个项目,即使我将此函数调用了4次。
答案 0 :(得分:11)
你做了什么应该工作。
<?php
function function1(){
global $array;
$array[] = 'hi';
}
function1();
function1();
function1();
print_r($array);
你可能还有另外一个问题。请注意,所有变量的生命周期都是脚本的当前运行。它们不会连续存在。为此,您需要使用某种持久性,如会话,cookie,文件系统,数据库。
如需更多帮助,请发布完整代码。
答案 1 :(得分:5)
我对你问题的措辞感到有些困惑。当你说“我必须在两个不同的文件中运行”时。你的意思是说你有“两个”功能吗?
如果您有两个函数都试图使用$ array变量,则需要在两个函数中调用global $array;
。
原因是global
有点误导。所有它真正做的是将$_GLOBALS
成员的引用分配给本地作用域中与$ _GLOBALS索引同名的变量。换句话说,如果你这样做:
global $variable;
这与说这个基本相同:
$variable =& $_GLOBALS['variable']; (assign by reference)
实际变量$variable
仍然是功能级别的范围,它恰好具有对全局变量的引用。
这意味着如果你没有在每个函数中定义global $variable
,那么你只需要在该函数的范围内创建一个全新的变量。当函数结束时,变量将被取消设置,并且函数内的任何更改都将丢失。
尽管如此,全局变量仍然是一个坏主意。如果你只是维护一个局部变量,并在需要时将它作为参数传递给其他函数,那就更清楚了。
答案 2 :(得分:0)
我的问题是函数中不知道全局$ array。但是当我放置第一个def时:$ array = array();在第一个函数调用之前,它起作用了。