我一直在用PHP中的一些字符串来制作我自己的框架...... 有什么东西会让人感到困扰"我
$var = "hello!";
$arr = array("h","e","l","l","o","!");
有人可以告诉我哪一个($var
或$arr
)使用的内存比另一个多?为什么?
乍一看,我会说数组会占用更多内存,因为它必须将每个字符放在数组本身内,但我不确定。
答案 0 :(得分:3)
该数组将使用比字符串
更多的内存字符串和数组本身就是zval结构,但数组中的每个元素也是一个字符串,每个元素都有自己的zval;数组占用了大量的内存。还有一个事实是数组元素包含键和值,每个都使用内存
读取此article以查看数组结构使用了多少内存
答案 1 :(得分:2)
数组需要(很多!)更多内存。
PHP中的字符串是内存中的一个对象,它包含(例如)长度和指向内存中实际数据的指针。我认为在大多数平台上,长度为32位,指针为64位。对于某些CPU的16字节对齐要求,这意味着每个字符串将至少为32个字节(描述符+实际数据) - 即使它只是一个字符。
示例中的数组包含6个字符串。这将是192字节加上存储数组的开销,这也不是无关紧要的(至少128个字节)。
免责声明:此答案中使用的数字是一个粗略的近似值 - 期望比这里提到的开销更多。