Я создаю многостраничную форму в PHP, используя сеанс. Переменная $stage
отслеживает прогресс пользователя при заполнении формы, (ОБНОВЛЕНИЕ) и обычно устанавливается в $ _POST на каждом этапе формы.
На второй странице (этап 2) кнопка отправки формы получает свое значение следующим образом:
echo '<input type="hidden" name="stage" value="';
echo $stage + 1;
echo '" />;
Это прекрасно работает - $stage + 1
оценивает до 3, если я на странице 2. Но так как я делаю это более одного раза, я решил вытащить этот код в функцию, которую я определил в верхней части мой код, до $stage
упоминается.
В том же месте, где я ранее использовал приведенный выше код, я вызываю функцию. Я проверил, что код функции такой же, но теперь $stage + 1
оценивается как 1.
Оценивает ли PHP мою переменную при определении функции, а не при ее вызове? Если так, как я могу предотвратить это?
Обновление 1
Чтобы проверить эту теорию, я установил $stage = 2
до определения своей функции, но она все равно оценивается в 1, когда я вызываю функцию. Что происходит?
Проблема решена
Спасибо всем, кто предложил переменную область видимости в качестве виновника - сейчас я бью себя по лбу. $stage
была глобальной переменной, и я не называл ее $GLOBAL_stage
, как обычно, чтобы предотвратить подобные проблемы.
Я добавил global $stage;
в определение функции, и она отлично работает. Спасибо!