PHP数组或字符串性能和内存使用情况

时间:2016-06-03 19:23:41

标签: php arrays

选项1或选项2,这是内存和性能使用方面最可行的方式,可在以下循环中附加多个电子邮件ID。

选项1:字符串$errorString

while (!feof($file_handle)) {  
    $errorString .= $email."<br>";
}

选项2:数组$errorArray[]

while (!feof($file_handle)) {  
    $errorArray[].= $email."<br>";
}

2 个答案:

答案 0 :(得分:2)

数组将使用更多内存,因为它需要存储所有字符串以及引用它们的所有数组元素。

字符串将花费更多时间,因为每次连接时都必须将两个字符串复制到新值$errorString

除非您有数以千计的电子邮件,否则不太可能产生明显的差异,因此您应该使用哪种方法使其余代码更容易。 Premature optimization is the root of all evil.

答案 1 :(得分:0)

那么好吧。在大多数情况下,字符串将在后台进行最少的处理,以便为其附加子字符串。但是,那里有一些值得注意的事情:

<强> 1。稍后您将使用您创建的字符串或数组进行一些处理。 如果要在没有单独格式化的情况下向用户显示电子邮件ID,那么您可能会显示字符串,而无需任何进一步的要求。当您想要将最终结果存储在数据库中或只是将整个字符串中的任何内容存储时,这也适用。如果您使用数组然后使用字符串,这将要求您首先implode数组,从而使字符串成为更好的选择。

但是,如果您需要将这些字段显示为单独的字段,那么您需要先将explode字符串添加到不同的部分,然后才能使用它们。同样,如果使用字符串,则会占用更多内存。

重点是,这取决于你要对变量做什么。

<强> 2。变量有多大? 这实际上是最重要的问题。如果你要在变量中只有一些内容,比如一千个以下的成员,那么你的选择并不重要,除非你对每个成员做一些内存密集的事情。如果你不会进行数百万次迭代,那么我猜两者的性能差异可以忽略不计,这意味着你做出的选择并不重要。

PS:当您为阵列分配varibale时,您不必像在问题中那样使用array [] .= something。您执行array[] = something,因为您要将something追加到array而不是array[index]