PHP中是否有一个简单、快速的数组?

PHP中是否有一个简单、快速的数组?,php,arrays,Php,Arrays,我需要一个在PHP中使用最小内存的简单数组。我想要一个分配的内存块的精确C++等价物,在这里你只能使用索引迭代。我发现PHP中的数组使用的内存比size*type\u size(我猜是用来存储键值等)要多。还有比这更简单的吗 编辑: 谢谢大家 是的,我在发帖后立刻想到了字符串的概念。我需要一个布尔数组,这样看起来就行了。只是获取/设置角色的速度稍微慢了一点 Judy阵列看起来也很有趣,但我还没有尝试过 我尝试过SplFixedArray,但它似乎使用了与普通阵列相同的内存量(除非我错过了某些内容

我需要一个在PHP中使用最小内存的简单数组。我想要一个分配的内存块的精确C++等价物,在这里你只能使用索引迭代。我发现PHP中的数组使用的内存比size*type\u size(我猜是用来存储键值等)要多。还有比这更简单的吗

编辑:

谢谢大家

是的,我在发帖后立刻想到了字符串的概念。我需要一个布尔数组,这样看起来就行了。只是获取/设置角色的速度稍微慢了一点

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

我尝试过SplFixedArray,但它似乎使用了与普通阵列相同的内存量(除非我错过了某些内容)。

你别无选择。
PHP中的所有数组都是相同的ordred映射

如果您在阵列中遇到任何内存问题,我建议您使用一些更相关的技术。
PHP设计用于处理每个用户向web服务器请求的相对较小的数据量。

您可以使用似乎满足您需求的。

SplFixedArray类提供了数组的主要功能。SplFixedArray与普通PHP数组之间的主要区别在于,SplFixedArray的长度固定,并且只允许范围内的整数作为索引。优点是它允许更快的阵列实现

离你最近的地方

我需要一个在PHP中使用最小内存的简单数组

PHP中最快的数组类型实际上是字符串。它也是最不需要记忆的东西;与C等价的数据结构最接近

 $byte = ord($string[123]);
它被编入索引。但其局限性当然是它只对字节值有效。(你没有详细说明你的需求。所以这是你的一般答案。)


作为固定长度
SplFixedArray
PHP的替代,它还具有的扩展。它们是关联的,但与PHP相比可以保存内存;而且据说要快一点。(在脚本语言中,关注这一点没有多大意义,但是,嘿。)

在PHP中使用数组是一种非常好的方法。

您怎么可能需要比
数组()提供的速度更快的速度呢?如果您需要php提供更高的速度,那么
array()
所能提供的可能就是您使用了错误的语言。这甚至不可能,除非您将项目限制为特定类型(这里,“type”表示“C type”-修复了
sizeof
)。然后还是一团糟。根据项目类型和PHP实现的不同,它可能会导致对所有访问进行装箱/取消装箱,从而使许多潜在的速度优势无效。谢谢。是的,我在发帖后立刻想到了字符串的概念。我需要一个布尔数组,这样看起来就行了。只是获取/设置角色的速度稍微慢了一点。朱迪阵列似乎也很有趣。我试过SplFixedArray,但它似乎使用了与普通数组相同的内存量(除非我在处理过程中遗漏了某些内容)。@NoOne:如果你是在处理布尔值,那么应用
“1”
“0”
应该与
“\0”
“\1”
一样有效。因此,您可以用可读性换取速度。
SplFixedArray
实现要求每个条目少一个
zval
(通常一个用于键,一个用于值),但如果只存储布尔值,则不会节省太多。@mario。那么,我们如何高效地创建指定长度的字符串呢?例如,长度为40k?@Pacerier的字符串最常用于此。例如,
str\u pad(“,40960,“\0”)
用于40K NUL字节。@mario,str\u repeat性能会更好吗?SplFixedArray性能很差,因为它是一个PHP对象,并且有很大的创建开销。也就是说,一旦它被创建,它就有了更好的内存和速度。