Я пытаюсь изменить один кусок информации в массиве. Вот что у меня есть: (set.php)
require_once('config.php');
$spotid = $_GET['id'];
$array = & $spotsopen;
//$opennot = $spotsopen[$spotid];
$spotsopen[$spotid] = false;
и config.php имеет массив spotopen:
$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 =). Приведенный выше код работает, но как только я обновляю его, он меняет значение обратно на предыдущее. Я понятия не имею, почему это так.
Вы не можете сохранять такие данные в нескольких запросах. При каждом запросе PHP запускается с нуля, снова выполняя config.php файл, определяющий переменную.
Так что, если вы делаете этот запрос:
set.php?id=13
PHP вносит необходимые изменения, отправляет страницу в браузер и забывает обо всех ваших переменных.
Поэтому, если вы затем вызовете другую страницу или ту же самую с другим идентификатором, тогда PHP начнет с пустой информации и не будет знать о предыдущем изменении идентификатора 13.
Если вам нужно, чтобы эти данные были сохранены между запросами, есть несколько возможностей:
Если его нужно сохранить только для пользователя, используйте переменные сеанса. Если, с другой стороны, это должен быть глобальный параметр, одинаковый для каждого пользователя, то вам следует обратиться к файловое хранилище, или к база данных, как MySql.
Попробуйте следующий код для файла 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, а затем извлеките массив из нее.