4

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

这是我的代码..

Index.php page...

<?php
    $arr = array();

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

?>

阿贾克斯页面......

<?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;
?>

我还应该怎么做才能使这个数组成为全局...

4

3 回答 3

2

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

于 2012-08-10T04:42:44.263 回答
2

是的,每个页面加载后变量都会“过期”。如果您需要在请求之间保留一些数据,您有几个选择:

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

您是否在 ajax.php 中包含 index.php?如果您包含 index.php,则按照“Sabin”的说明进行操作。我不明白你想做什么。记住每次调用 php 文件时,它与以前的 php 文件无关。如果你想在你的站点中使用全局变量,使用 db 会更好

于 2012-08-10T04:50:36.797 回答