修改数组值不起作用

时间:2016-01-10 11:37:36

标签: php arrays replace temporal

我试图更改数组中的一条信息。这就是我所拥有的:(set.php)

ArrayList

并且config.php具有spotsopen数组:

require_once('config.php');

$spotid = $_GET['id'];

$array = & $spotsopen;
//$opennot = $spotsopen[$spotid];

$spotsopen[$spotid] = false;

所以我有一个页面,重定向到set.php。 GET中定义的键的值发生了变化(set.php?id =)。上面的代码确实有效,但是一旦我刷新它,它就会将值更改回上一个。我不知道为什么会这样做。

2 个答案:

答案 0 :(得分:2)

您无法在多个请求中保留这样的数据。在每次请求时,PHP都从头开始,再次执行 config.php 文件,定义变量。

因此,如果您执行此请求:

set.php?id=13

PHP进行必要的更改,将页面发送到浏览器,并忘记所有变量。

因此,如果您再调用另一个页面,或者使用另一个id调用相同的页面,那么PHP将以空白信息开头,并且不会知道之前对于ID 13的更改。

如果您需要跨请求保留此数据,则有以下几种可能:

如果只需要为每个用户保留,则使用session variables。另一方面,如果它必须是全局设置,对于每个用户都是相同的,那么您应该查看file storagedatabase,例如MySql。

答案 1 :(得分:0)

尝试使用以下文件set.php的代码:

require_once('config.php');

$spotid = $_GET['id'];

$array = & $spotsopen;

$spotsopen[$spotid] = "false";

header("Refresh:0; url=check-updated-value.php/?uid=$spotid");

这将为您提供更新的数组值: check-updated-value.php的代码

require_once('config.php');
$id=$_GET['uid'];
echo "Updated value for id".$id."is".$spotsopen[$id];

打开“check-updated-value.php”页面

,检查更新后的值

在config.php中,不要直接定义数组,因为它会定义并在每次执行文件时将所有值初始化为true。相反,将值加载到数据库中,如mysql,然后从中获取数组。