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