在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
}
}
答案 0 :(得分:4)
除非你处理真正庞大的数组/大量变量,否则你需要在PHP中担心内存效率。
PHP中的数组并不像C ++中的数组或类似的低级语言; PHP中的数组是一个地图。您有一个键列表(必须是唯一的,所有类型字符串或整数),以及与键对应的值列表。所以以下是一个合法的数组:
array(0 => 'butt', 1 => 'potato', 2 => 'tulip')
但
也是如此 array(5 => 'i', 'barry' => 6, 19 => array(-1 => array(), 7 => 'smock'))
在这两种情况下,数组中有3个条目,因此有3个键和3个值。
除了数组中的键和值之外,还可以通过键/值对出现的 order 来区分一个数组。如果您定义一个数组以使其具有非负整数作为键,则这通常是预期的顺序。当您使用foreach()
等构造时,顺序很重要。
答案 1 :(得分:1)
array [3]将是未定义/未设置但不会导致错误,并且该数组将仅使用内存用于该3个值 - php与C不同,您必须查看这些内容。
答案 2 :(得分:1)
Notice: Undefined offset: 3 in /data/home/sjoerd/public_html/svnreps/test/a.php on line 3
。您可以通过isset()
或array_key_exists()
。