答案 0 :(得分:2)
数组中的每个元素都存储在一个单独的内存位置,你还需要存储数组的哈希表以及键,所以NOOOO,它将是 lot 更多。< / p>
答案 1 :(得分:1)
没有。 PHP具有附加到每个定义的变量/数组元素的内部元数据。 PHP不直接支持位字段,因此最小的ACTUAL分配是一个字节,加上元数据开销。
答案 2 :(得分:1)
我怀疑有一个应用程序使用少于系统arcitecture的数据word
作为最小数据存储单元。
但我相信它根本不应该引起您的关注。
答案 3 :(得分:1)
这取决于php解释器。标准解释器非常浪费,尽管这对于动态语言来说并不罕见。大量开销是由垃圾收集和每个值的动态特性引起的;因为数组的内容可以采用任意类型的任意值(即你可以写$ar[1] = 's';
),所以必须存储类型和附加的元信息。
使用以下测试脚本:
<?php
$n = 20000000;
$ar = array();
$i = 0;
$before = memory_get_usage();
for ($i = 0;$i < $n;$i++) {
$ar[] = ($i % 2 == 0);
}
$after = memory_get_usage();
echo 'Using ' . ($after - $before) . ' Bytes for ' . $n . ' values';
echo ', per value: ' . (($after - $before) / $n) . "\n";
我得到 150 每个数组条目的字节数(x64,php 5.4.0-2)。这似乎是在实现的更高端; ideone报告 73字节/条目(php 5.2.11),codepad也是如此。