PHP数组效率和内存澄清

标签 php arrays memory memory-management

在 PHP 中声明数组时,索引可能会乱序创建...即

数组[1] = 1 数组 [19] = 2 数组[4] = 3

我的问题。在创建这样的数组时,长度是否为 19,中间是否有空值?如果我尝试获取 Array[3],它会是未定义的还是会抛出错误?另外,这如何影响内存。 3个索引的内存会被占用还是19个?

目前还有一位开发人员编写了一个包含 3 个数组的脚本 FailedUpdates[] FailedDeletes[] FailedInserts[]

这样做效率更高,还是在关联数组控制多个子数组的情况下做

"Failures" array(){
    ["Updates"] => array(){
           [0] => 12
           [1] => 41
                   }
    ["Deletes"] => array(){
           [0] => 122
           [1] => 414
           [1] => 43
                   }
    ["Inserts"] => array(){
           [0] => 12
                   }
}

最佳答案

在 PHP 中,内存效率并不是您真正需要担心的事情,除非您处理的是非常大的数组/大量变量。

PHP 中的数组与 C++ 或类似的低级语言中的数组并不完全相同; PHP 中的数组是一张 map 。您有一个键列表(必须是唯一的,并且都是字符串或整数类型),以及一个与键对应的值列表。所以下面是一个合法的数组:

array(0 => 'butt', 1 => 'potato', 2 => 'tulip')

不过也是

array(5 => 'i', 'barry' => 6, 19 => array(-1 => array(), 7 => 'smock'))

在这两种情况下,数组中都有 3 个条目,因此有 3 个键和 3 个值。

除了数组中的键和值之外,一个数组还可以通过键/值对出现的顺序与另一个数组区分开来。如果您定义一个数组,使其具有非负整数作为键,这通常是预期的顺序。当您使用 foreach() 等构造时,顺序很重要。

关于PHP数组效率和内存澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3038031/

相关文章:

php - Laravel错误反射异常函数不存在

javascript - 是否有可能用JavaScript中的其他内存覆盖变量指向的内存?

caching - 写合并 : which cache line is avoided to be read before written?

c - 内存分配问题c

php - 回溯迷宫生成(将所有内容转换为二维数组)

php - 翻译 PHP 工作日和月份

php - 从 mysql 数据库中搜索输入词并根据最相关的排序

c++ - 将 64 位整数转换为 7 位字符数组

java - 如何将多维json处理成3个数组

python - 如何将列表 [a, b, c] 转换为 python slice index[ :a, :b :c]?