php中的全局数组

hd.*_*hd. 9 php arrays global-variables

我必须在两个不同的文件中运行.其中一个应该在每次调用时向数组添加一个新项目,并且数组应该是可访问的.我为它做的是:

function1(){

   global $array;

   $array[] = 'hi';

}
Run Code Online (Sandbox Code Playgroud)

但它只是在数组中创建一个项目,即使我调用此函数4次.

Ali*_*aru 11

你做了什么应该工作.

<?php

function function1(){

   global $array;

   $array[] = 'hi';

}
function1();
function1();
function1();
print_r($array);
Run Code Online (Sandbox Code Playgroud)

测试一下.

你可能还有另一个问题.请注意,所有变量的生命周期都是脚本的当前运行.它们不会连续存在.为此,您需要使用某种持久性,如会话,cookie,文件系统,数据库.

如需更多帮助,请发布完整代码.

  • 那么多次调用是不是在同一次运行中完成的?我猜错了吗? (2认同)

Age*_*rum 5

我对你的问题的措辞感到有点困惑.当你说"我必须在两个不同的文件中运行"时.你的意思是说你有"两个"功能吗?

如果你有两个函数都试图使用$ array变量,你需要调用global $array;这两个函数.

这样做的原因global是有点误导.所有它真正做的是将一个成员的引用分配给$_GLOBALS本地作用域中与$ _GLOBALS索引同名的变量.换句话说,如果你这样做:

 global $variable;
Run Code Online (Sandbox Code Playgroud)

它与说这个基本上是一回事:

 $variable =& $_GLOBALS['variable'];   (assign by reference)
Run Code Online (Sandbox Code Playgroud)

实际变量$variable仍然在功能级别作用域,它恰好具有对全局变量的引用.

这意味着如果你没有global $variable在每个函数中定义,你只需要在该函数的范围内创建一个全新的变量.当函数结束时,变量未设置,并且函数内对其进行的任何更改都将丢失.

尽管如此,全局变量仍然是一个坏主意.如果你只是维护一个局部变量,并在需要时将它作为参数传递给其他函数,那就更清楚了.