PHP if(count($ array))和if($ array)是否意味着相同的东西?

时间:2009-02-16 05:20:25

标签: php arrays

在PHP中,这些值总是会返回相同的值吗?

//example 1

$array = array();

if ($array) {
   echo 'the array has items';

}

// example 2

$array = array();

if (count($array)) {
   echo 'the array has items';

}

谢谢!

4 个答案:

答案 0 :(得分:20)

http://www.php.net/manual/en/language.types.boolean.php开始,它表示空数组被视为FALSE。


(引用): 转换为布尔值时,以下值被视为FALSE:

  • 布尔值FALSE本身
  • 整数0(零)
  • 浮点数0.0(零)
  • 空字符串,字符串“0”
  • 包含零元素的数组
  • 一个零成员变量的对象(仅限PHP 4)
  • 特殊类型NULL(包括未设置的变量)
  • 从空标签创建的SimpleXML对象

  • >的count() 0不是错误
  • 填充数组不是错误

然后问题中说明的两个案例将始终按预期工作。

答案 1 :(得分:4)

那些将始终返回相同的值,但我找到了

$array = array();

if (empty($array)) {
   echo 'the array is empty';
}

更具可读性。

答案 2 :(得分:1)

他们确实会。如果数组非空,则将数组转换为bool将为true,并且对于多个元素,数组的计数为true。

另请参阅:http://ca2.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

答案 3 :(得分:1)

请注意,第二个示例(使用count())显着慢,在我的系统上至少50%(超过10000次迭代)。 count()实际上计算数组的元素。我不是肯定的,但我想将一个数组转换为类似于empty()的布尔值,并在找到至少一个元素后立即停止。