array
当我不需要任何相关的数组功能时,是否可以使用PHP 的轻量级替代品?据我所知,array
内部是一个哈希映射,对于存储简单的元素数组来说是过度且低效的。如果 PHP 有一个类似于 C++ 的类或编程结构std::vector
,那就太好了。
问问题
4842 次
2 回答
9
看看 SPL 数据结构。一个例子是http://www.php.net/manual/en/class.splfixedarray.php,它比普通数组更快。
于 2013-07-20T13:33:23.583 回答
3
不,PHP 没有严格等同于std::vector
.
我们只是使用我们的多用途数组或SPL 中的附加数据结构之一,即SplFixedArray
,ArrayObject
以及一些Heaps和Stacks,但它们实际上都不是等效的。
我能想到的最接近节省内存的方法是Judy Arrays 的 PECL 扩展:
PHP Judy 实现了稀疏动态数组(又名 Judy 数组)。此扩展基于 Judy C 库。Judy 数组仅在填充时才消耗内存,但如果需要,可以增长以利用所有可用内存。Judy 的主要优势是可扩展性、高性能和内存效率。
它支持以下模式:
BITSET
- 将 Judy 数组定义为位集,键为整数,值为布尔值INT_TO_INT
- 将键/值定义为整数的 Judy 数组,并且仅限整数。INT_TO_MIXED
- 将 Judy Array 的键定义为整数和任何类型的值。STRING_TO_INT
- 定义 Judy 数组,其中键为字符串,值为整数,且仅限整数。STRING_TO_MIXED
- 将带有键的 Judy 数组定义为字符串和任何类型的值。
你可能想要INT_TO_MIXED
. 就像我说的,这是我能想到的最接近的。这是不一样的。我以前从未使用过它,所以我无法判断它是否符合您的效率要求。
于 2013-07-20T14:08:21.450 回答