当数组中没有元素时,为什么count()返回的值大于0?

时间:2011-10-06 12:27:14

标签: php arrays

如果数组中没有元素,为什么count()返回的值超过0?

if (count($_POST['tickboxes']) > 0) {
           echo "found";
}

$ POST数组结构:

Array
(
    [ID] => 53
    [tickboxes] => 
    [dropdowns] => 
)

我期待0或null。

3 个答案:

答案 0 :(得分:9)

你正试图countDocs不是数组的东西,而是字符串。

如文档所述,count会为字符串返回1,无论其长度如何。

您可以使用strlenDocs函数,因为它会计算该字符串中ascii字符的数量:

if (strlen($_POST['tickboxes']) > 0) {
           echo "found";
}

此外,您可以使用emptyDocs语言构造,它将检查它是空数组还是空字符串,或整数0或字符串'0' - 最后一个可能会导致您悲伤(取决于你正在做什么,即如果你的用户可以向你发送这样的输入)。

如果empty可以作为您的选择,您也可以省略它:

if ($_POST['tickboxes']) {
           echo "found";
}

如果您这样做,请不要忘记检查$_POST数组中的密钥是否存在。如果您不确定,empty将不会给您任何警告:

if (!empty($_POST['tickboxes'])) {
           echo "found";
}

答案 1 :(得分:2)

那是因为你的变量不是数组。试试echo count('');,当count(array())为0时,您会看到它返回1。

答案 2 :(得分:0)

我认为@Ariel解决了它

如果您从html表单发送数据,则可以在firefox中使用tamperdata插件

https://addons.mozilla.org/en-US/firefox/addon/tamper-data/

这将有助于你:)