php与$ _POST的矛盾

时间:2016-10-17 09:50:34

标签: php array-key-exists

我有这个程序:

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情况)但随后它是"未定义索引"?

1 个答案:

答案 0 :(得分: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

希望这个解释有所帮助。