传递$ _POST到array_key_exists()时的PHP警告

时间:2013-04-22 16:12:45

标签: php arrays post warnings

所以我使用以下代码样式if(array_key_exists('some_value', $_POST)){echo 'hi';}

对于PHP 5.2.17我从这种代码风格中收到警告。这是警告: WARNING: argument 2 for array_key_exists() is not either an array or an object on line: 123

这对我来说很奇怪,因为我认为应该始终定义$ _POST数组。那不是这样吗?我不确定是什么原因导致$ _POST数组不被视为数组。我没有将$ _POST重置为任何东西,所以它应该始终作为数组存在。有谁知道什么是错的。如果需要更多信息,请告诉我,谢谢你的帮助。

编辑:我应该注意,这只发生在生产服务器上。我的本地环境没有这个问题。

2 个答案:

答案 0 :(得分:2)

请改用if(isset($_POST['some_value'])) { echo 'hi'; }。没问题。

同时检查您是否覆盖或取消设置 $ _POST(或者您正在使用的某个框架正在为您执行此操作)。我避免使用超全局变量这样做,因为我认为这是一个不好的做法,并且可能会让人感到头疼。

答案 1 :(得分:2)

Superglobals $_POST$_GET仅在脚本为POSTGET时填充。在您的示例中,您获得该错误的原因是,如果脚本没有发布操作。在检查某个帖子值之前,您应该检查以确保有帖子:

if(isset($_POST)) {
    //The form was posted
}

以那种方式。在那里,您可以使用array_key_exist检查某些值,或者您可以进一步检查isset($_POST['myKey'])