添加巨大数字键时PHP数组的内存使用情况

phi*_*sch 8 php arrays memory-management

如果我想使用PHP非关联数组(如字典)并添加一个大键,那么PHP会分配多少内存?

$myArray = Array();
$myArray[6000] = "string linked to ID 6000";
$myArray[7891] = "another key-value pair";
Run Code Online (Sandbox Code Playgroud)

PHP还会为未使用的密钥0-5999和6001-7890分配内存吗?

Dou*_* T. 14

不,PHP没有像C风格的数组那样实现它.Php数组是关联容器,正如数组上的php文章所述.

PHP中的数组实际上是一个有序映射.映射是将值与键关联的类型.

由于保留了顺序,因此数组可能是某种二叉搜索树.如果你不熟悉二进制搜索树,我建议你选择一本好的数据结构书来了解更多信息,或者查看这篇维基百科文章,了解其简介.上面的例子将产生一个带有两个节点的二叉搜索树 - 一个用于密钥6000的数据,另一个用于密钥7891.

  • 注意,如果你通过json_encode()传递它,那将创建0-5999键 - json不喜欢PHP的稀疏数组. (12认同)