首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP数字数组索引和内存

PHP数字数组索引和内存
EN

Stack Overflow用户
提问于 2014-08-08 20:05:10
回答 3查看 111关注 0票数 2

如果我有一个数组,它使用数字键,并且我添加了一个远超出范围的键,它是否也创建了中间键。例如,如果我有

代码语言:javascript
复制
$array = array(1,2,3,4);
$array[9] = 10;

这会导致php在内部为键4-8保留内存,即使它们没有值。

我问的原因是我有一个大的二维数组,我想在动态规划算法中用于回忆录,因为只需要计算总单元格中的一小部分。但是,对于整个2D数组来说,拥有这样大小的空数组将对内存造成负担。有没有更好的方法来做两个关键的回忆录?我可以使用一个关联数组,并将键附加到分隔符或类似的方案中,但是如果php不做额外的键,我更愿意(为了简单和可读性)使用2D数组。有什么想法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-08 20:15:20

这可能没有完全回答你的问题,但应该有助于找到答案,至少对第一个问题。

创建这个程序。

代码语言:javascript
复制
$arr = array(1, 2, 3, 4);
sleep(10);
$arr[100000] = 1;
sleep(10);

现在运行它并监视它的内存使用情况。

在前十秒钟内,程序为一个小数组保留内存。

在接下来的十秒钟内,如果数组为未使用的索引保留空间,那么内存的使用率就会比前一个高得离谱。但是,如果不这样做,所使用的内存只会略有增长。

这应该让您了解您的最终程序的效果,无论是否使用2D数组是一个好主意。

票数 2
EN

Stack Overflow用户

发布于 2014-08-08 20:09:06

别担心,不会有额外的钥匙的。PHP不是这样的,即使您认为是常规的数组也是关联数组。您甚至可以像这样组合PHP数组:

代码语言:javascript
复制
array(
     1 => 121,
     2 => 2112,
     'stuff' => array('morestuff'),
     'foo' => 1231
)

使用PHP,它非常舒适,这也可以是好的和坏的。

票数 2
EN

Stack Overflow用户

发布于 2014-08-08 20:12:43

它似乎不会分配一个占位符或使用任何内存为未使用的密钥,基于道格T.的response。希望这有帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25211435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档