5

Someone can explain to me if this "freak" behavior its what i should expect.

I'm debbuging some code and got this:

I geting some result on $data and create this if to be sure it's $data have some info.

So:

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

And aways geting in the if.

So i do some var_dump to see and wow.

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

go this:

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

how count data = 1 and !$data = true and empty($data) = true?

I hope isn't stupid question, i'm sorry if is.

4

3 回答 3

8

来自. _count

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

最有可能的$data是,不是一个数组。仔细检查 var_dump

var_dump($data)
于 2013-05-02T20:30:19.843 回答
6

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

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

于 2013-05-02T20:30:51.827 回答
-1
!0 = true;
empty(0) = true;
count(0) = 1

您的值为 0 或空字符串。

于 2013-05-02T20:32:11.883 回答