Php数组字符串或var字符串?

时间:2014-11-05 08:16:27

标签: php arrays string var

我一直在用PHP中的一些字符串来制作我自己的框架...... 有什么东西会让人感到困扰"我

$var = "hello!";

$arr = array("h","e","l","l","o","!");

有人可以告诉我哪一个($var$arr)使用的内存比另一个多?为什么?

乍一看,我会说数组会占用更多内存,因为它必须将每个字符放在数组本身内,但我不确定。

2 个答案:

答案 0 :(得分:3)

该数组将使用比字符串

更多的内存

字符串和数组本身就是zval结构,但数组中的每个元素也是一个字符串,每个元素都有自己的zval;数组占用了大量的内存。还有一个事实是数组元素包含键和值,每个都使用内存

读取此article以查看数组结构使用了多少内存

答案 1 :(得分:2)

数组需要(很多!)更多内存。

PHP中的字符串是内存中的一个对象,它包含(例如)长度和指向内存中实际数据的指针。我认为在大多数平台上,长度为32位,指针为64位。对于某些CPU的16字节对齐要求,这意味着每个字符串将至少为32个字节(描述符+实际数据) - 即使它只是一个字符。

示例中的数组包含6个字符串。这将是192字节加上存储数组的开销,这也不是无关紧要的(至少128个字节)。

免责声明:此答案中使用的数字是一个粗略的近似值 - 期望比这里提到的开销更多。