如何在PHP中将数组声明为全局?

时间:2012-08-10 04:36:45

标签: php file array-push

每次加载页面时,我都需要将数组的内容写入文件中... 我已经在index.php中创建了数组,并将内容推送到另一个ajax页面中的数组。 但我无法全局访问数组..它显示错误为'undefined variable $ arr'..

这是我的代码..

Index.php page...

<?php
    $arr = array();

    $ourFileName = "saved_data.txt";
    $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
    fwrite($ourFileHandle, "");

?>

Ajax页面.....

<?php
    $name_full = $_GET['name_full'];
    $arr = $_GET['$arr'];

    array_push($arr,$name_full);
    /*------------To create a file-----------------*/
    $ourFileName = "saved_data.txt";
    $ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
    /*---------To save data in the file------------*/
    foreach($arr as $key => $value)
    {
        fwrite($ourFileHandle, $value);
    }
    fwrite($ourFileHandle, ',');
    fclose($ourFileHandle);
    echo $name_full;
?>

我还应该做些什么来使这个数组全局...

3 个答案:

答案 0 :(得分:2)

在ajax页面中将$ arr声明为global $arr;并查看是否有效,但我怀疑这不起作用,因为每次加载页面时,数组都会重置,为什么不使用session for this ?

答案 1 :(得分:2)

是的,每个页面加载后变量“过期”。如果您需要在请求之间保留一些数据,则可以选择以下几种方法:

  • 将数据传递给客户端(可能在隐藏的表单字段中),让他们重新提交它(可通过GET / POST访问)。这很糟糕,因为用户很容易操纵这个数据客户端
  • 将变量存储在$ _SESSION中,该变量将保留给用户。这很糟糕,因为如果您有多个服务器,则其他服务器上的数据将无法访问(除非您进行一些花哨的负载平衡以确保客户端每次都访问相同的服务器)。
  • 使用可供所有服务器使用的“临时”商店(memcache,redis)
  • 用户'持久'商店(mySQL,mongo),可供所有服务器使用

答案 2 :(得分:1)

你是否已将index.php包含在ajax.php中?如果你包含了index.php,那么就像“Sabin”所说的那样。 我不明白你想做什么。记得每次你调用一个php文件时,它都与以前的php文件无关。如果你想在你的网站中使用全局变种,使用db会更好