从php中的多个文件访问文件中声明的更新变量

时间:2014-07-10 20:26:14

标签: php file-io

我在php文件中声明了一个变量数组,并在包含该文件后更改了它的数组值。然后,在更改之后我想要数组变量将具有更新的值,因此如果我从第三个文件访问它,我将获得新的数组值。我该怎么做? 我从在线测验页面需要它。每当用户从数据库加载页面时,我都会收到随机问题。提交后,为了显示结果,我需要在submit.php页面中提取问题的ID号(提交后重定向的页面)。我已将问题ID存储在问题页面的数组中,我希望可以从submit.php页面访问该数组。

1 个答案:

答案 0 :(得分:0)

这取决于您对阵列的行为。

如果它是一个特定于浏览您的Web应用程序的实例的数组,每个人都有自己的变量可以随意使用,那么您可能希望使用会话设置它,并且{ {1}}全局变量。 也许是这样的:

$_SESSION

但是,如果访问应用程序的任何人都可以全局访问数组中的数据,那么您可能希望使用数据库或APC来存储数组。简单地使用平面文件的危险在于,一个用户可能导致写入操作而另一个用户导致读取操作,这可能导致不可预测的结果。像MySQL这样的数据库和像APC这样的缓存扩展主要以先到先得的方式运行,并且不会遇到这个问题。

如果您的数据很重要,请使用数据库,因为数据将在服务器重启后继续存在:

//file1.php
<?php
    session_name("applicationName"); //give your session a unique and static name, so that other apps on your server don't interfere
    session_start(); //must always start the session before working with session variables
    $_SESSION['data'] = array(1, 3, 6, 9); //set your array into the session global
    include("file2.php");
?>

//file2.php
<?php
    $_SESSION['data'][0]++; //for demonstration purposes, increment the first key of the array
?>

//file3.php
<?php
    session_name("applicationName"); //same session name
    session_start();
    print_r($_SESSION['data']); //shows the contents of your array,
        //which will now contain 2, 3, 6, 9
?>

//store the variable to a row in the database $query = $dbconn->query("INSERT INTO tblVariables(variableName, variableValue) VALUES ('someVariable', '".$dbconn->real_escape_string(serialize($yourArray))."';"); //retrieve the variable from that row $query = $dbconn->query("SELECT variableValue FROM tblVariables WHERE variableName = 'someVariable';"); if($query) { while($row = $query->fetch_assoc()) $yourArray = deserialize($row['variableValue']); } / serialize()是将数组或对象合并为单个可存储字符串的便捷方式。确保存储的数据库列的大小为deserialize(),或VARCHAR

如果您的数据属于临时性质,APC可以执行此操作,只要它在您的服务器上可用:

TEXT

APC不要求您使用//store the array in APC apc_store('variableName', $yourArray); //retrieve the array from APC $yourArray = apc_fetch('variableName');

您必须弄清楚应用程序中数据库或APC的位置,但会话示例应足以让您根据自己的问题了解如何组织代码。