修改数组值不起作用
Modifying an array value not working
我正在尝试更改数组中的一条信息。这是我拥有的:(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=) 中定义的键的值发生了变化。上面的代码确实有效,但只要我刷新它,它就会将值改回之前的值。我不知道为什么会这样。
为文件 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中,不要直接定义数组,因为它会在您每次执行文件时定义所有值并将其初始化为真。相反,将值加载到数据库中,例如 mysql,然后从中获取数组。
您不能跨多个请求持久保存这样的数据。在每次请求时,PHP 从头开始,再次执行您的 config.php 文件,定义变量。
因此,如果您执行此请求:
set.php?id=13
PHP 进行必要的更改,将页面发送到浏览器,然后忘记所有变量。
因此,如果您随后调用另一个页面,或具有另一个 ID 的同一页面,那么 PHP 将以空白信息开始,并且不会知道 ID 13 的先前更改。
如果您需要跨请求保留此数据,有几种可能性:
如果只需要为每个用户持久化,那么使用session variables. If on the other hand, it must be a global setting, the same for every user, then you should look to file storage, or to a database,如MySql。
我正在尝试更改数组中的一条信息。这是我拥有的:(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=) 中定义的键的值发生了变化。上面的代码确实有效,但只要我刷新它,它就会将值改回之前的值。我不知道为什么会这样。
为文件 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中,不要直接定义数组,因为它会在您每次执行文件时定义所有值并将其初始化为真。相反,将值加载到数据库中,例如 mysql,然后从中获取数组。
您不能跨多个请求持久保存这样的数据。在每次请求时,PHP 从头开始,再次执行您的 config.php 文件,定义变量。
因此,如果您执行此请求:
set.php?id=13
PHP 进行必要的更改,将页面发送到浏览器,然后忘记所有变量。
因此,如果您随后调用另一个页面,或具有另一个 ID 的同一页面,那么 PHP 将以空白信息开始,并且不会知道 ID 13 的先前更改。
如果您需要跨请求保留此数据,有几种可能性:
如果只需要为每个用户持久化,那么使用session variables. If on the other hand, it must be a global setting, the same for every user, then you should look to file storage, or to a database,如MySql。