想要我的if($ object)在count($ object)=== 0时评估false

时间:2013-03-25 20:11:44

标签: php arrays object interface

我创建了一个用来表示数组的对象,但是有一些方法。所以我让它实现了原生接口:IteratorAggregateCountable。这样你可以foreachcount。到目前为止一切都很好。

但是现在我希望它像数组一样进行评估。因此,如果count($object)为零,则if($object)会被评估为false。是否有Comparable接口或什么?

2 个答案:

答案 0 :(得分:1)

使用type Juggling

您可以指定var的预期类型。

$object = count ( $object );
$object = (array) $object;

同样,如果你想为你的变量分配一些其他类型,这里是可能的值列表:

  • (int)
  • (bool)
  • (float)
  • (string)
  • (array)
  • (object)
  • (unset)
  • (binary)

另请查看此Comparable interface

答案 1 :(得分:0)

documentation显示评估为false的所有内容:

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

从此列表开始,对象永远不会被视为false。因此,唯一的方法是使用count()(bool)的值转换为布尔值,如果您需要按Tomi Sebastián Juárez的答案中的指示进行严格比较。