表示一组位的好方法是什么?
我有一组各种开/关切换(数千个)并需要存储和检索它们的状态。天真的实现将是一系列布尔值,但我想知道是否有更好的方法(在访问速度和/或内存要求方面更好)。
我发现了这个BitArray实现,但它仅限于32位,这对于这种情况是不够的。
答案 0 :(得分:4)
另一种选择是将它们存储在整数PHP_INT_SIZE*8
的块中,并使用bitwise operators来设置/取消设置它们。
我无法评论此方法的速度或内存消耗,您可能需要进行一些基准测试。
答案 1 :(得分:2)
您可能想查看DataStructures in SPL。根据您的UseCase,它们可能比数组表现更好,例如当您知道集合的大小等时使用FixedArray。对于大型数据集,这可能会有所不同。
另一个想法是将选项连接成1和0的单个字符串。由于字符串可以作为数组访问,因此您可以执行$ options [31]来检索此位置的位。那么你需要的只是一个位置是哪个选项的地图。
尽管如此,Yacoby的解决方案听起来对我来说是最可行的。
答案 2 :(得分:1)