#php #array-key-exists
#php #array-key-exists
Вопрос:
У меня есть эта программа:
if (!isset($_POST['foo'])) doSomeThing1();
else {
if (!array_key_exists('foo',$_POST)) doSomeThing2();
else doSomeThing3();
}
но… поток программы переходит к 3-му случаю, завершаясь ошибкой: undefined index 'foo' (in file.php, line xxx)
.
Не могли бы вы объяснить, почему? Почему array_key_exists
возвращает true
(который переводит скрипт в 3D-регистр), но впоследствии это «неопределенный индекс»?
Комментарии:
1. вы пробовали просматривать свои данные с помощью a
var_dump($_POST)
? это тоже может помочь нам в отладке. также — что в file.php: xxx? код, выдающий ошибку, может иметь отношение к отладке ошибки, не так ли?2. Пожалуйста
var_dump()
его для определения того, какие именно данные поступают и почему они не соответствуют никаким условиям.3. Что подразумевается под
doSomeThing3()
?4. Пожалуйста, дайте нам знать, чего вы ожидаете, когда в $ _POST есть ключ foo; Когда в $ _POST нет ключа foo и т. Д
5. Спасибо, хорошего дня
Ответ №1:
if (!isset($_POST['foo'])) doSomeThing1();
else {
if (!array_key_exists('foo',$_POST)) doSomeThing2();
else doSomeThing3();
}
Согласно этому коду, как это работает…
!isset($_POST['foo'])
==> возвращает true
и выполняет dosomeThing1()
, когда 'foo'
в массиве НЕТ ключа $_POST
если $_POST
у него нет никакого ключа, он проверяет !array_key_exists('foo',$_POST)
array_key_exists('foo', $_POST)
проверка наличия 'foo'
ключа в $_POST
массиве или нет. array_key_exists('foo', $_POST)
то же isset($_POST['foo'])
самое, что и so, оно всегда выполняется doSomeThing3()
, когда 'foo'
в массиве нет ключа $_POST
.
Надеюсь, это объяснение поможет.