我有这个程序:
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情况)但随后它是"未定义索引"?
答案 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
。
希望这个解释有所帮助。