php object array in,PHP的ArrayObject是否具有in_array等价物?

本文探讨了在PHP中如何避免O(n)的迭代,推荐使用`in_array`配合`ArrayObject`,并介绍了自定义子类`Whatever`来封装`has`方法。作者认为使用`getArrayCopy()`有潜在成本,且迭代效率低。
摘要由CSDN通过智能技术生成

不.甚至无视文档,您可以自己查看

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)并且考虑到替代方案,它们是不值得的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值