如何在PHP中将数组声明为全局数组?
我需要将数组的内容写入文件,每次加载页面时。。。 我在index.php中创建了数组,并在另一个ajax页面中将内容推送到数组中。。 但我无法全局访问阵列。。它将错误显示为“未定义变量$arr” 这是我的密码如何在PHP中将数组声明为全局数组?,php,file,array-push,Php,File,Array Push,我需要将数组的内容写入文件,每次加载页面时。。。 我在index.php中创建了数组,并在另一个ajax页面中将内容推送到数组中。。 但我无法全局访问阵列。。它将错误显示为“未定义变量$arr” 这是我的密码 Index.php page... <?php $arr = array(); $ourFileName = "saved_data.txt"; $ourFileHandle = fopen($ourFileName, 'w') or die("can't
Index.php page...
<?php
$arr = array();
$ourFileName = "saved_data.txt";
$ourFileHandle = fopen($ourFileName, 'w') or die("can't open file");
fwrite($ourFileHandle, "");
?>
Index.php页面。。。
在ajax页面中,将$arr声明为,global$arr代码>并查看这是否有效,但我怀疑这是否有效,因为每次加载页面时,数组都会重置,为什么不为此使用会话?是的,每个页面加载后变量都会“过期”。如果需要在请求之间保留一些数据,您有几个选项:
- 将数据传递给客户机(可能在隐藏的表单字段中),然后让他们重新提交(通过GET/POST访问)。这是不好的,因为用户很容易在客户端操作此数据
- 将变量存储在$\u会话中,该会话将为用户保留。这是不好的,因为如果您有多台服务器,则其他服务器上的数据将无法访问(除非您执行一些奇特的负载平衡,以确保客户端每次都访问同一台服务器)
- 使用可供所有服务器使用的“临时”存储(memcache、redis)
- 用户的“持久性”存储(mySQL、mongo),可用于所有服务器
是否在ajax.php中包含index.php?如果包含index.php,请按照“Sabin”所说的操作。
我不明白你想做什么。记住,每次你调用一个php文件时,它与以前的php文件没有关系。如果你想在你的站点中使用一个全局变量,使用db会更好。看起来你应该使用db而不是文件。你能解释一下你的需要吗?通过查看代码,您所做的似乎是正确的,为什么需要将数组声明为全局数组?@Sabin:becoz如果我不这样做,我应该在ajax页面中声明它,每次加载页面时,它都会创建一个新数组。。那我怎么才能添加内容呢???@Deepthi,是的,我对此表示怀疑。与其将其存储在数组中,不如将其存储在会话中。读取ajax页面中的会话并将其写入文本文件。这对你来说是可行的解决方案。@Deepthi,非常欢迎你,在这里帮助和得到帮助很好。如果我的答案对您有帮助,请将此答案标记为已接受。:)
<?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;
?>