【发布时间】:2012-07-09 06:49:06
【问题描述】:
这是一个Java数组:
int[] myArray = new int[3];
myArray[0] = 0;
myArray[1] = 1;
myArray[2] = 2;
第一行立即保留 3 个连续的内存块。创建第四个元素实际上需要使用 int[4] 创建一个新数组,然后将索引 0 到 2 的值传输到新数组中。如:
int[] mySecondArray = new int[4];
for (int i = 0; i < myArray.length; i += 1) {
mySecondArray[i] = myArray[i];
}
mySecondArray[3] = 3;
但是在 PHP 中,我们可以声明一个数组,然后简单地添加另一个元素,而无需像 Java 那样大惊小怪。
$my_array = array(0, 1, 2);
$my_array[] = 4;
在将附加元素推入现有数组后,PHP 是否真的负责创建新数组?还是 PHP 数组实际上与 C 和 Java 等语言中的数组不同(在内存方面)?我有点担心,因为我看到很多 PHP 代码遍历一个循环并将 50 多个新元素附加到现有数组中,这在 Java 中是完全可笑的。
【问题讨论】:
-
你有内存问题吗?
-
我不知道具体细节,但我确信 PHP 的创建者会尽可能有效地处理这个问题。 PHP 数组包含比传统数组更广泛的数据结构。这样的结构在 C 和 Java 中肯定存在(想到
ArrayList)。 -
@Dagon 我只是一名实习生,但我在我工作的团队中的开发人员争论 PHP 中哪个更快:10,000 个变量赋值或 10,000 个 PHP 数组赋值。当他们进行讨论时,我想到了这个问题。
-
工作参数超出了堆栈溢出的范围。
-
@Dagon 你错了。这不在堆栈溢出的范围之内。我问了一个关于编程的合理问题,它可以帮助那些想知道内存如何与 PHP 一起工作的人。