PHP isset, кажется, не правильно читает при обработке

1

У меня возникло странное явление в скрипте PHP, который я пишу. У меня довольно большая форма с большим количеством полей, флажками, переключателями и т.д.

В скрипте обработки есть много повторяющегося кода, где я проверяю, задано ли поле isset, и затем оно выводит предложение на основе этого поля.

Код, который я использую для обработки поля:

if(isset($_POST['testresults'])) { // test results Info
    $testresults = $_POST['testresults'];
    echo $clientInitials . " test results are " . $testresults . ". ";
} 

Теперь, по некоторым причинам, из блоков 40+, которые идентичны этому (только с разными переменными и выходом предложения), есть два, которые выполняются, даже когда поле пусто/не установлено. В качестве теста я скопировал один и тот же блок кода в новый PHP файл, и он имеет такое же поведение, но это точная копия блока, который работает правильно, за исключением имени поля/переменной. Я вырезал-n-вставил имя поля из формы, чтобы убедиться, что не было орфографической ошибки или чего-то еще. В качестве другого теста, если я изменил строку на if (! Isset ($ _ POST ['testresults']), то он пропускает этот блок, как должен. Таким образом, он реагирует так, как будто есть данные в этом поле, даже если нет (и он делает это с еще одним блоком). Имена полей/переменные также не используются нигде в скрипте, и я проверил это, выполнив поиск по файлу.

Поле формы:

<input type="text" name="testresults" value="">

Я пробовал его с параметром "значение" и без него без изменений. Все остальные, которые работают правильно, имеют в них value = "".

Я попытался очистить свой кеш браузера, и нет никакой разницы, все еще это странное поведение.

Поэтому я думаю, мне просто интересно, есть ли предел для использования isset(), или я что-то упускаю?

  • 0
    Функции PHP не заботятся о том, сколько раз они могут быть вызваны во время выполнения скрипта, нет ограничений на использование, поэтому ваша проблема в другом ... будьте осторожны, пусто! = Не установлено
  • 0
    Хотя почему вы создаете 40 почти дублирующих блоков кода, я не знаю .... конечно, лучше создать функцию, которую вы можете вызывать в цикле
Показать ещё 5 комментариев
Теги:
isset

1 ответ

4
Лучший ответ

isset() проверяет только, установлено ли значение, а не пустым, поэтому он чаще используется для проверки того, действительно ли форма представлена в первую очередь, или для проверки переменных $ _GET. Функция, которую вы должны использовать, empty() - или в вашем случае !empty():

if(!empty($_POST['testresults'])) { // test results Info
    $testresults = $_POST['testresults'];
    echo $clientInitials . " test results are " . $testresults . ". ";
} 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню