奇怪的PHP行为:空,!和计数

时间:2013-05-02 20:27:59

标签: php

有人可以向我解释这种“怪异”行为是否符合我的期望。

我正在调试一些代码,并得到了这个:

我在$ data上创建了一些结果并创建了这个,以确保它的$ data有一些信息。

所以:

if(!$data || empty($data) || count($data) == 0)

远离if。

所以我做了一些var_dump来看和哇。

var_dump(!$data , empty($data) , count($data));

去吧:

bool(true)
bool(true)
int(1)

count data = 1和!$ data = true和empty($ data)= true?

我希望不是愚蠢的问题,如果是的话,我很抱歉。

3 个答案:

答案 0 :(得分:8)

来自PHP Documentation on count

  

返回var中的元素数。如果var不是数组或   实现了Countable接口的对象,将返回1。那里   是一个例外,如果var为NULL,则返回0。

最有可能的是,$data不是数组。用它上面的var_dump仔细检查

var_dump($data)

答案 1 :(得分:6)

计数返回var中的元素数。如果var不是数组或具有已实现Countable接口的对象,则将返回1。有一个例外,如果var为NULL,则返回0。

查看PHP文档http://php.net/manual/en/function.count.php

答案 2 :(得分:-1)

!0 = true;
empty(0) = true;
count(0) = 1

您的值为0或空字符串。