У меня есть эта программа:
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
(что приводит сценарий к трехмерному случаю), но впоследствии это «неопределенный индекс»?
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'])
так что всегда выполняется doSomeThing3()
когда нет 'foo'
ключ в $_POST
массив.
Надеюсь, это объяснение поможет.
Других решений пока нет …