PHP中有一个简单,快速的数组吗?

时间:2011-11-26 11:24:17

标签: php arrays

我需要一个在PHP中使用最少内存的简单数组。我想要一个已分配的内存块的确切C ++等价物,你可以只使用索引进行迭代。我发现PHP中的数组使用的内存比让我们说的更多:size * type_size(我想存储键值等)。有没有更简单和简单的东西?

编辑:

谢谢大家。

是的,我在发布问题后立即想到了字符串的想法。我需要一个布尔数组,所以这似乎工作。获得/设置它的角色只是慢一点。

Judy阵列看起来也很有趣,但我还没有尝试过。

我已经尝试过SplFixedArray,但似乎它使用了与普通数组相同的内存量(除非我在路上错过了)。

5 个答案:

答案 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中使用数组的一种非常好的方法。