不.甚至无视文档,您可以自己查看
echo '
';
print_r( get_class_methods( new ArrayObject() ) );
echo '
';所以你没有多少选择.正如你所说,一种选择就是施展它
$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)并且考虑到替代方案,它们是不值得的.