0

我有这个程序:

if (!isset($_POST['foo'])) doSomeThing1();
else {
    if (!array_key_exists('foo',$_POST)) doSomeThing2();
    else doSomeThing3();
}

但是...程序流程转到 3d 案例,失败并出现错误:undefined index 'foo' (in file.php, line xxx).

你能解释一下,为什么?为什么array_key_exists返回true(将脚本带到 3d 案例)但随后它是“未定义的索引”?

4

1 回答 1

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'])doSomeThing3()'foo'$_POST

希望这个解释有所帮助。

于 2016-10-17T10:04:52.697 回答