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:检查任何已发布的变量是不是为空 - 表单:所有字段都是必需的