php - 检查 $_POST 是不是为数组?

Posted

技术标签:

【中文标题】php - 检查 $_POST 是不是为数组?【英文标题】:php - check if $_POST is array?php - 检查 $_POST 是否为数组? 【发布时间】:2011-08-01 10:18:30 【问题描述】:

我知道这可能是一个愚蠢的问题,但我遇到了一个 php 代码的 sn-p,它在执行其他功能之前检查 $_POST is_array() 是否。

现在我猜 $_POST 是否应该始终是关联数组?真的需要这个检查吗?为什么?

【问题讨论】:

并非总是如此。我个人在 $_POST、$_GET 和 Co 周围使用对象包装器。它们仍然作为数组工作,但它们是 ArrayObjects 并且会通过简单的is_array() 检查失败。但这是一个非常特殊的情况。通常不用担心。 【参考方案1】:

正如已经多次提到的,$_POST 是一个超全局变量,它总是被定义并且总是一个数组(除非被覆盖)。

如果您尝试测试是否已发布某些内容,则可以使用以下内容:

if (count($_POST)) 
    // something has been submitted

要回答主要问题,不,不需要is_array 检查。

【讨论】:

【参考方案2】:

正如许多人已经说过的那样,它始终是一个数组。

我认为目的可能是检查一个空数组。 !empty($_POST) 应该没问题。

也许编码员有一些部分将数组更改为字符串(如果你问我是愚蠢的)并且想要进行检查,否则如果该语句首先出现,那么它是不必要的

【讨论】:

【参考方案3】: $_POST 是一个超全局变量,并且总是被定义(总是存在)并且总是一个数组 这是真的,即使它不包含任何元素 但是,如果不建议并且我从未见过它,也可以覆盖或取消设置它 $_POST 数组不需要 isset() 和 is_array(),但 $_POST 数组中的元素经常需要它们

【讨论】:

感谢您的回复,我想为您的答案投票,因为它很详细,虽然我觉得要检查 zerkms 之一,因为它说的是我想要的;我已经知道所有其他细节。【参考方案4】:

$_POST 始终是一个数组,他们可能会检查某个 $_POST 值是否是一个数组。

<input name="test" />$_POST['test'] 不是数组

<input name="test[]" /> $_POST['test'] 一个数组

【讨论】:

【参考方案5】:

$_POST 总是被定义为一个数组,即使它不包含任何键/值对。

【讨论】:

【参考方案6】:

PHP 确保 $_POST 始终是一个数组,除非您在代码中的某处以某种方式取消设置或覆盖 $_POST,否则您不需要进行该检查。

【讨论】:

【参考方案7】:

那个检查是不必要的。 $_POST 是一个始终定义的superglobal 数组。您应该使用isset检查特定元素

【讨论】:

【参考方案8】:

如果它没有以某种方式更改,例如

$_POST = 'not array';

那么它是数组;-)

【讨论】:

没错。除非另有明确声明 $_POST 超全局总是一个数组。 好的,但是,它只能由编码器更改,或者它也可以由表单提交者设置为字符串?这可能是一个安全问题吗? @Julie Rokk:如果它没有由开发人员明确更改,正如我回答的那样 - 它始终是一个数组。无法在外面更改。

以上是关于php - 检查 $_POST 是不是为数组?的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 检查两个数组是不是相等

PHP:检查任何已发布的变量是不是为空 - 表单:所有字段都是必需的

如何在 PHP 中检查不完整的 POST 请求

如何检查json数据数组是不是返回值

检查 $_POST['id'] 是不是为数字,否则执行此操作

PHP - $_FILES 数组为空 [重复]