为什么count()会覆盖一个值?

时间:2019-03-27 05:30:59

标签: php arrays count

今天,我遇到了一些使我感到困惑的php行为。

让我们考虑以下代码:

$arr = [11, 22];
echo json_encode($arr);  // prints [11,22] as expected
$result = count($arr =! 0);
echo json_encode($arr);  // prints true 

我知道count的用法是错误的,因为我向其提供了布尔值而不是它期望的数组。

但是

为什么哦,为什么count的用法错误会覆盖部分数组的值?

3 个答案:

答案 0 :(得分:1)

根据PHP比较运算符,我们不应该等于!= ,但不应类似于 =!

$arr = [11, 22];
echo json_encode($arr);  // prints [11,22] as expected
$result = count($arr != 0);
echo json_encode($arr);  // prints [11,22] as expected 

运行上面的代码片段。它给出了预期的结果

答案 1 :(得分:0)

count()是基于php数组的函数,它期望将array作为参数并返回其中的元素计数,因此它不能用于进行任何类型的检查,这是您在第三行中所做的

答案 2 :(得分:-1)

因为false也是一个值,如果count()不能获取数组而是一个有效变量,则返回true,即1。在您的脑海中记住这一点的一种好方法:count(false)基本上与:count(“ one boolean”)相同,因此结果是“ ONE” boolean。