在重新声明数组之前取消数组是否有任何好处?

时间:2015-02-02 14:46:37

标签: php initialization

在您看来,如果我有一个包含8个字符串的10万个条目的数组,那么首先将unset($array)的内存使用更好,然后将其重新声明为$array = [];或直接重新声明重新声明它($array = [];)?

谢谢!

2 个答案:

答案 0 :(得分:8)

这一切都是一样的。覆盖" old"使用ANYTHING new的数组会导致旧数组(最终)收集垃圾并从系统中删除。是否分两个阶段进行:

unset($arr); // force delete old array
$arr = [];   // create new array

或只是

$arr = []; // replace old array with new empty one

基本上归结为同样的事情:旧阵列最终会被清理干净。

答案 1 :(得分:3)

虽然Marc B's answer绝对正确,但我希望根据 Daan 的评论自行查看。

使用memory_get_usage()我在unset()重新声明之间进行了快速测试。两者同样减少了记忆。

<强> unset()

$arr = array_fill(0, 1000000, 'abcdefgh'); // memory: 96613552
unset($arr);                               // memory:   224856

<强>重声明

$arr = array_fill(0, 1000000, 'abcdefgh'); // memory: 96613552
$arr = [];                                 // memory:   224856