今天,我遇到了一些使我感到困惑的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的用法错误会覆盖部分数组的值?
答案 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。