PHP有一个in_array
函数,用于检查本机数组/集合中是否存在特定值。我正在寻找ArrayObject的等效函数/方法,但methods似乎都没有复制此功能。
我知道我可以将ArrayObject转换为(数组)并在in_array中使用它。我也知道我可以手动迭代ArrayObject并查找值。这似乎都不是“正确”的方式。
如果你能用证据支持,那么“不”是一个非常恰当的答案。答案 0 :(得分:7)
没有。即使忽略文档,您也可以自己查看
echo '<pre>';
print_r( get_class_methods( new ArrayObject() ) );
echo '</pre>';
所以你只剩下几个选择。正如你所说,一种选择就是施展它
$a = new ArrayObject( array( 1, 2, 3 ) );
if ( in_array( 1, (array)$a ) )
{
// stuff
}
哪个是IMO,最好的选择。你可能使用getArrayCopy()方法,但这可能比转换操作更昂贵,更不用说选择会有可疑的语义。
如果封装是您的目标,您可以创建自己的ArrayObject子类
class Whatever extends ArrayObject
{
public function has( $value )
{
return in_array( $value, (array)$this );
}
}
$a = new Whatever( array( 1, 2, 3 ) );
if ( $a->has( 1 ) )
{
// stuff
}
我根本不推荐迭代,那就是O(n)并且鉴于替代方案而不值得。