我试图更改数组中的一条信息。这就是我所拥有的:(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 =)。上面的代码确实有效,但是一旦我刷新它,它就会将值更改回上一个。我不知道为什么会这样做。
答案 0 :(得分:2)
您无法在多个请求中保留这样的数据。在每次请求时,PHP都从头开始,再次执行 config.php 文件,定义变量。
因此,如果您执行此请求:
set.php?id=13
PHP进行必要的更改,将页面发送到浏览器,并忘记所有变量。
因此,如果您再调用另一个页面,或者使用另一个id调用相同的页面,那么PHP将以空白信息开头,并且不会知道之前对于ID 13的更改。
如果您需要跨请求保留此数据,则有以下几种可能:
如果只需要为每个用户保留,则使用session variables。另一方面,如果它必须是全局设置,对于每个用户都是相同的,那么您应该查看file storage或database,例如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,然后从中获取数组。