ключ массива существует — php противоречит $ _POST

У меня есть эта программа:

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 (что приводит сценарий к трехмерному случаю), но впоследствии это «неопределенный индекс»?

0

Решение

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 массив.

Надеюсь, это объяснение поможет.

1

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

Других решений пока нет …

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