2012-08-10 66 views
4

我需要将数组的内容写入文件,每次页面加载时... 我在index.php中创建了数组,并将内容推送到另一个ajax页面中的数组.. 但是我无法访问数组全球..其显示错误为 '未定义的变量$改编' ..如何在PHP中将数组声明为全局数组?

这里是我的代码..

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

我还应该做些什么来使t他的阵列全球...

+0

真的看起来像你应该使用数据库而不是文件 – 2012-08-10 04:38:34

+0

你会解释你的需要更多?通过查看代码,你所做的事似乎是正确的,为什么你需要声明一个数组为全局的? – WatsMyName 2012-08-10 04:38:38

+0

@Sabin:becoz如果我不这样做,我应该在ajax页面声明它,每次页面加载时,它会创建一个新的数组..然后我怎么能添加内容? – Deepzz 2012-08-10 04:41:07

回答

2

在ajax页面声明$ ARR为,global $arr;,看看这是否工作,但我怀疑这是行不通的,因为每次页面加载,数组被重置,为什么你不使用这个会议?

+0

没有..它不工作.. :( – Deepzz 2012-08-10 04:47:19

+0

@Deepthi,是的,我怀疑,而不是将它存储在数组中,将其存储在会话中。可行的解决方案。 – WatsMyName 2012-08-10 04:49:01

+0

非常感谢... :) – Deepzz 2012-08-10 04:55:42

2

是的,变量在每个页面加载后“过期”。如果你需要一些数据请求之间持续下去,你有几种选择:

  • 将数据传递到客户端(也许在隐藏的表单字段),并且必须通过GET /他们重新提交它(访问POST)。这是不好的,因为用户很容易操纵这个数据客户端
  • 将变量存储在$ _SESSION中,该变量将持续用户。这很糟糕,因为如果您拥有多台服务器,则其他服务器上将无法访问数据(除非您进行一些花哨的负载平衡以确保客户端每次都访问同一台服务器)
  • 使用“临时”存储(内存缓存,Redis的),这是提供给所有服务器
  • 用户的“持续性”店(MySQL的,蒙戈),这是提供给所有服务器
1

有你列入ajax.php在index.php?如果你已经包含index.php,然后按照“Sabin”的说法。 我不明白你想做什么。记住,每次你打电话给一个PHP文件,它与以前的PHP文件无关。如果你想在你的网站的全球品种,使用数据库将更好