Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 修改数组值无效_Php_Arrays_Replace_Temporal - Fatal编程技术网

Php 修改数组值无效

Php 修改数组值无效,php,arrays,replace,temporal,Php,Arrays,Replace,Temporal,我试图更改数组中的一条信息。这里是我拥有的:set.php require_once('config.php'); $spotid = $_GET['id']; $array = & $spotsopen; //$opennot = $spotsopen[$spotid]; $spotsopen[$spotid] = false; config.php具有spotsopen数组: $spotsopen = array( '1' => true, '2

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

require_once('config.php');

$spotid = $_GET['id'];

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

$spotsopen[$spotid] = false;
config.php具有spotsopen数组:

    $spotsopen = array(
    '1' => true,
    '2' => true,
    '3' => true,
    '4' => false,
    '5' => false,
    '6' => true,
    '7' => true,
    '8' => true,
    '9' => true,
    '10' => true,
    '11' => true,
    '12' => true,
    '13' => true,
    '14' => true,
    '15' => true,
    '16' => true,
    '17' => true,
    '18' => true,
    '19' => true
);

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

请为file 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页面,检查更新后的值

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

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

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

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

set.php?id=13
PHP进行必要的更改,将页面发送到浏览器,并忘记所有变量

因此,如果您随后调用另一个页面,或者使用另一个id调用同一个页面,那么PHP将以空白信息开始,并且不知道以前对id 13的更改

如果需要跨请求保留此数据,有几种可能性:


如果只需要为每个用户持久化,则使用。如果另一方面,它必须是一个全局设置,对每个用户都是一样的,那么您应该查找或查找类似MySql的数组。

更改该数组将无法在刷新页面后继续,因为刷新的页面将重新加载包含硬编码值的config.php文件。我不确定是否还有更多,但您似乎没有以任何方式存储修改后的值。一旦脚本完成,所有php变量都将丢失,当您再次运行它时,所有值都将按照代码中的定义。您可能需要一个数据库或配置文件来存储这些值。然后你就可以阅读、使用、修改和存储它们了。我试着让这个系统快速运行,而不是使用数据库。我从来没有尝试过文件存储的东西。它快吗?或者我应该使用数据库?如果您有选择的话,最好使用数据库,它将更容易查询最近一个小时内发生了多少次提交,并且可以方便地扩展以满足您可能想到的任何未来存储需求。如果您的主机支持MySql,那么就使用它,并确保使用现代功能来处理它,即不是MySql,而是PDO。