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

Gue*_*rra 5 php

有人可以向我解释这种"怪胎"行为是否符合我的预期.

我正在重新编写一些代码,并得到了这个:

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

所以:

if(!$data || empty($data) || count($data) == 0)
Run Code Online (Sandbox Code Playgroud)

并且在if的地方.

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

var_dump(!$data , empty($data) , count($data));
Run Code Online (Sandbox Code Playgroud)

去吧:

bool(true)
bool(true)
int(1)
Run Code Online (Sandbox Code Playgroud)

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

我希望不是愚蠢的问题,对不起,如果是的话.

Mat*_*dge 8

PHP文档上count.

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

最有可能$data的不是阵列.用它上面的var_dump仔细检查

var_dump($data)
Run Code Online (Sandbox Code Playgroud)


Man*_*hit 6

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

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