我需要一个在PHP中使用最少内存的简单数组。我想要一个已分配的内存块的确切C ++等价物,你可以只使用索引进行迭代。我发现PHP中的数组使用的内存比让我们说的更多:size * type_size(我想存储键值等)。有没有更简单和简单的东西?
编辑:
谢谢大家。
是的,我在发布问题后立即想到了字符串的想法。我需要一个布尔数组,所以这似乎工作。获得/设置它的角色只是慢一点。
Judy阵列看起来也很有趣,但我还没有尝试过。
我已经尝试过SplFixedArray,但似乎它使用了与普通数组相同的内存量(除非我在路上错过了)。
答案 0 :(得分:10)
您可以使用似乎符合您要求的SplFixedArray。
答案 1 :(得分:9)
我需要一个在PHP中使用最少内存的简单数组。
PHP中最快的数组类型实际上是字符串。它也是最不需要记忆的东西;最接近C等效数据结构。
$byte = ord($string[123]);
它被编入索引。但限制当然是它只适用于字节值。 (你没有详细说明你的需求。所以这是你的通用答案。)
作为固定长度SplFixedArray
的替代方案,PHP还具有 Judy arrays 的扩展名。它们是关联的,但与PHP相比可以节省内存;并且据说有点快。 (在脚本语言中没有多大意义来关心它,但是嘿。)
答案 2 :(得分:3)
http://php.net/manual/en/class.splfixedarray.php
SplFixedArray类提供了数组的主要功能。 SplFixedArray和普通PHP数组之间的主要区别在于SplFixedArray具有固定长度,并且仅允许范围内的整数作为索引。优点是它允许更快的阵列实现。
最近,你可以得到。
答案 3 :(得分:1)
你别无选择 无论如何,PHP中的所有数组都是相同的ordred映射。
如果您遇到阵列的任何内存问题,我建议您使用一些更相关的技术 PHP旨在处理每个用户请求到Web服务器的相对较小的数据量。
答案 4 :(得分:1)
Judy library and its PHP extension是在PHP中使用数组的一种非常好的方法。