Изменение значения массива не работает

Я пытаюсь изменить один кусок информации в массиве. Вот что у меня есть: (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 =). Приведенный выше код работает, но как только я обновляю его, он меняет значение обратно на предыдущее. Я понятия не имею, почему это так.

-1

Решение

Вы не можете сохранять такие данные в нескольких запросах. При каждом запросе PHP запускается с нуля, снова выполняя config.php файл, определяющий переменную.

Так что, если вы делаете этот запрос:

set.php?id=13

PHP вносит необходимые изменения, отправляет страницу в браузер и забывает обо всех ваших переменных.

Поэтому, если вы затем вызовете другую страницу или ту же самую с другим идентификатором, тогда PHP начнет с пустой информации и не будет знать о предыдущем изменении идентификатора 13.

Если вам нужно, чтобы эти данные были сохранены между запросами, есть несколько возможностей:

Если его нужно сохранить только для пользователя, используйте переменные сеанса. Если, с другой стороны, это должен быть глобальный параметр, одинаковый для каждого пользователя, то вам следует обратиться к файловое хранилище, или к база данных, как MySql.

2

Другие решения

Попробуйте следующий код для файла 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, а затем извлеките массив из нее.

0

По вопросам рекламы [email protected]