当我不需要任何相关的数组功能时,是否有PHP的array
的轻量级替代品?据我所知,array
是一个内部的哈希映射,这对于存储一个简单的元素数组来说是过分且低效的。如果PHP有一个类似于C ++的std::vector
的类或编程结构,那就太棒了。
答案 0 :(得分:9)
查看SPL数据结构。一个例子是http://www.php.net/manual/en/class.splfixedarray.php,它比普通数组快。
答案 1 :(得分:3)
不,PHP没有严格等同于std::vector
。
我们只使用multi-purpose arrays或其中一个additional datastructures in SPL,即SplFixedArray
,ArrayObject
和一些Heaps和Stacks,但没有它们实际上是等价的。
我能想到的最节省的是PECL extension for Judy Arrays:
PHP Judy实现了稀疏动态数组(又名Judy Arrays)。此扩展基于Judy C库。 Judy数组仅在填充时消耗内存,但如果需要,可以增长以利用所有可用内存。 Judy的主要优势是可扩展性,高性能和内存效率。
它支持以下模式:
BITSET
- 将Judy数组定义为Bitset,键为整数,值为布尔值INT_TO_INT
- 使用键/值作为整数和仅整数来定义Judy数组。INT_TO_MIXED
- 使用键作为整数和任何类型的值定义Judy数组。STRING_TO_INT
- 定义Judy数组,其中键为字符串,值为整数,仅为整数。STRING_TO_MIXED
- 使用键作为字符串和任何类型的值定义Judy数组。您可能想要INT_TO_MIXED
。就像我说的那样,这是我能想到的最接近的。这是不一样的。我之前从未使用它,所以我无法判断它是否符合您的效率要求。